案例开发-文件管理服务开发(一)| 学习笔记

简介: 快速学习案例开发-文件管理服务开发。

开发者学堂课程【Spring Boot+Vue.js+FastDFS实现分布式图片服务器 :案例开发-文件管理服务开发(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/742/detail/13146


案例开发-文件管理服务开发(一)

 

内容介绍

一、搭建文件管理服务

二、启动文件管理服务

三、总结

 

在前面已经实现了通过 http 成功访问 storage 上面的图片,fastDFS 已经安装完毕,接下来进行文件管理服务。

 

一、搭建文件管理服务

图片16.png

1.前面主要是前后端分离的架构,上传文件的 html 是前端,文件管理服务是后端服务端。

文件管理服务提供通过 http 方式上传文件,删除文件、查询文件的功能,用户上传很多文件,管理员通过文件管理服务对文件服务器上的文件进行管理。

文件管理服务采用 Spring Boot 开发,文件管理服务通过与 fastDFS 交互最终将用户上传的文件存储到 fastDFS 上。

在 fastDFS 入门程序上继续开发:

图片17.png 

2. 搭建环境:

SpringBoot 依赖以及 web 应用包已经成功加入,接下来进行添加一些准备的工作。

(1)创建包  命名为:cn.itcats.javaee.fastdsf

图片18.png

(2) 创建模型 model  是一个 FileSystem 文件系统。里面有文件 Id,文件路径,文件大小,文件名称等等。

(3) 模型创建方法:有一些基本的属性,还有 get/set 方法!将其复制到环境中。

图片19.png

(4)创建包:cn.itcats.javaee.fastdsf.controller,

(5)在 controller 下面创建将来客户端即前端。用户上传图片请求 controller,将其图片上传到文件管理服务上。

(6)创建 FileServerController

@restController

@requestMapping(“/filesystem”)

Public class FileServerController{

添加注解:

@PostMapping(“/upload”) //上传图片并且添加路径

@ResponseBody   //接收数据

Public FileSystem upload(@RequestParam(“file”) MultpartFile file){     //刚刚创建的模型  

FileSystem  fileSystem =new FileSystem //定义对象

//MultpartFile file 将来传给客户端的名称是根据

@RequestParam(“”)进行指定 将来客户端传给服务端的名称就是 file

//当客户端通过 http 请求到文件管理服务 controller 方法,就是刚刚写的 upload 方法,即用户请求 html 页面,要上传图片的时候,就会将页面上传的图片上传到 upload 方法中。

//将文件先存储在 web 服务器上(本机),再调用 fastDFS 的 client 将文件上传到 fastDFS 服务器。

//先完成第一步:将文件存储到 web 服务器上。再借助测试代码,将本机文件上传到 fastDFS 上面

图片20.png

String OriginalFilename= file.getOriginalFilename()  //得到原始名称

String extention=

OriginalFilename.substring(originalFilename.lastIndexOf(“.”))  

//最后一个点开始的内容即拓展名

因为最终要调用测试代码,上面的文件地址就是刚刚上传的文件,而该文件存在于 web 服务器上,所以要拿到文件的拓展名,既然要拿到拓展名就要拿到原始名称。

拿到拓展名后就可以修改测试代码中,相应的位置。要将上传成功的图片存储再 web 服务器(本机)上的文件上传到 fastDFS。要找到刚刚上传的文件的物理路径。

图片21.png

当用户调用 file 的时候就可以拿到  但 fiel 是临时文件,可以通过一个方法将 file 放到物理路径上。

//防止重名,打造一个文件名

Striing fileNameNew=UUID.randomUUID()+extention;

//定义 file,使用 file 存储上传的文件,就可以将新上传的文件上传到物理路径下。并且可以拿到文件的地址。

File file1=new File(“F:\\develop\\upload\\”+fileNameNew)

fiel.transferTo(file1);

//获取新上传文件的物理路径

String newFilePath= File.getAbsolutePath()

//将获取到的物理路径放到刚刚的位置上,这就是新文件路径

图片22.png

filesyStem.setFileId(fileIId);

filesyStem.setFilePath(fileId);

filesyStem.setFileName(originalFilename);

return null;   //防止报错

}

3. 首先用户在 html 页面点击上传文件,通过 http 请求到文件管理服务中的 contoller 方法,controller 方被调用,将页面上传的文件传到 upload 方法中,文件得到文件的原始名称,拿到文件的原始名称的目的是获取文件的拓展名,取出拓展名,并且放到下方测试代码中。

4.定义一个新文件,将上传到文件放到指定的路径中,写进新文件后,获取新上传文件的物理路径。接下来的代码是之前测试过的代码,在文件元信息一栏可以将文件的名称写进去。

接下来就可以调用 upload 方法,返回文件 ID /fileID ,最终要返回  FileSystem。

在得到文件 ID 后,将文件 ID 写入 FileSystem 对象中的 setFileID、setFilePath 中还有 setFileName 中写入原始名称

//最终调用 service 以及 dao 将文件的路径存储到数据库中,由于时间关系就先不完成。以上就完成了文件上传的代码编写。

相关文章
|
存储 缓存 Rust
Polars (最强Pandas平替)
Polars (最强Pandas平替)
785 1
|
Dubbo Ubuntu Java
没有JDK和Maven,用Docker也能构建Maven工程
紧急的时候,借助Docker,在不安装JDK和Maven的环境也能构建Maven工程
2255 0
没有JDK和Maven,用Docker也能构建Maven工程
|
测试技术 C# 图形学
Unity3d 下websocket的使用
今天介绍一下如何在Unity3D下使用WebSocket。 首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目。 WebSocket是什么 WebSocket协议是为了实现网络客户端和服务器端全双工通信而引入的一种基于消息帧和TCP的通信机制,这个协议本身的目标是为了在http服务器上引入双向通信的机制,从而克服http单向通信的缺陷(http设计的初衷就不是为了双向通信),其可以在复用http的端口,支持http的代理,认证等,虽然如此,websocket可以独立于http存在。
|
10月前
|
安全 网络安全 持续交付
【2025最新渠道】免费SSL证书不限量申请
当网站缺乏SSL证书时,用户访问会收到“不安全”警告,影响用户体验和SEO排名。小林的创业公司因成本问题未能及时安装SSL证书,导致用户流失。传统SSL证书存在成本高、操作复杂、维护难等问题。现在,限时免费SSL证书提供无限次申请,覆盖所有子域名,支持自动化部署与终身护航,采用RSA 2048位加密,确保安全无忧。
|
12月前
|
应用服务中间件 nginx Docker
Docker:WARNING: Published ports are discarded when using host network mode 解决方法
Docker在使用 `host`网络模式时会忽略端口映射,因为此模式下容器已经直接暴露在主机网络上。通过理解并合理选择网络模式,可以有效解决 `WARNING: Published ports are discarded when using host network mode`的警告。根据具体需求,选择适合的网络模式,以便在保证性能的同时确保灵活性和安全性。希望本文提供的方法和分析能帮助您在使用Docker时更好地处理网络配置问题。
2297 12
|
分布式计算 运维 大数据
MaxCompute资源管理——使用成本优化功能实现包年包月计算资源降本增效
MaxCompute提供成本优化(计算资源优化推荐)功能,可基于实际作业请求量和资源配置期望,对包年包月一级Quota类型的计算资源生成更优的资源配置方案,帮助进一步提升计算资源利用率,优化计算成本。本文我们一起通过典型场景案例来看看如何通过成本优化(计算资源优化推荐)功能提供降本增效的参考建议。
922 1
|
Windows
Windows常用快捷键与终端命令
Windows常用快捷键 1、Ctrl + Z:撤消 无论你在做什么,Ctrl + Z都非常实用,这个功能都可以撤销当前的步骤,回到上一步未更改前,所以不要担心所有的错误。 2、Ctrl + C:复制 这可能是人们在使用Windows系统时使用的最方便的快捷键之一,轻松复制您喜欢的任何内容,直到您准备将其粘贴到任何您喜欢的位置。 3、Ctrl + V:粘贴 轻松粘贴您复制的所有内容,它可以是文本、文件、图像或文件夹,将所有东西组合在一起的非常有用的功能。
752 1
|
人工智能 前端开发 PyTorch
构建自己 AI 翻译助手取代谷歌翻译
构建自己 AI 翻译助手取代谷歌翻译
536 0
|
监控 Linux 开发者
国产操作系统统信UOS的简单故障维护,系统崩溃小妙招
国产操作系统统信UOS的简单故障维护,系统崩溃小妙招
国产操作系统统信UOS的简单故障维护,系统崩溃小妙招