文件上传-SpringBoot实现

概述

应用开发过程中,文件上传是一个基础的扩展功能,它的目的就是让大家共享我们上传的文件资源。作为一名合格的程序猿,在开发过程中实现文件上传是必需的技能,常见的文件上传包括:

  • 添加附件、文章封面等需求
  • 富文本编辑器扩展的文件上传

文件上传原理

上传流程

文件上传流程图

说明: 文件上传本质就是通过程序将用户文件通过I/O流复制到服务器的过程 

 临时目录

上传过程中文件首先存储在临时目录

文件上传过程中,文件不是直接存放在服务器真正的目录,而是要经过一个temp临时目录中转过后才上传到真实目录,临时目录存在的优势

  • 防止上传过程中因网络断开或者用户刷新或者取消而造成的大量的垃圾文件
  • 保证服务器真实目录上传的文件一定是有效的(而不存在垃圾文件)

其中临时目录可以由我们自定义它的位置:

springboot的yml文件中配置:spring.servlet.multipart.location:D://data/upload/temp

SpringBoot实现本地文件上传

后台支持多文件上传核心代码

上传文件

 

 前台页面

        a. 采用wangEditor富文本编辑器上传,参考官网提供的API实现

引入wangEditor.js

 

wangEditor的js代码实现

 

wangEditor上传页面

  b. 采用web uploader上传,可参考官网实现

HTTP访问服务器文件资源

若我们需要通过HTTP获取到上传到服务器的文件,我们就需要做一个静态资源文件路径的映射

访问路径映射
application.yml配置映射路径的值

 

扩展

若我们公司内部服务器出现故障,而且服务器中文件只有一份,那我们文件就可能丢失,此时就需要采用分布式文件存储,常用解决方案如下

  • Fastdfs,GDFS,但它们需要购买服务器自己去搭建,过程复杂且成本比较高
  • FTP技术采用冗余同步到另外服务器上,但它需要保证高可用
  • 阿里云/青牛/腾讯云/网易云的后台实现分布式存储OSS
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现文件上传的方式有很多种,下面我将介绍一种基于 Vue 和 Spring Boot 的实现方式,使用的是 Element UI 的上传组件 el-upload。 前端实现: 1. 在 Vue 组件中引入 Element UI 的 el-upload 组件。 ```vue <template> <el-upload class="upload-demo" action="/api/upload" :multiple="true" :on-change="handleUploadChange" :on-remove="handleUploadRemove" :file-list="fileList"> <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> ``` 2. 在 Vue 组件中定义 fileList 数组,用于存储上传的文件列表。 ```vue <script> export default { data() { return { fileList: [] } }, methods: { handleUploadChange(file, fileList) { this.fileList = fileList }, handleUploadRemove(file, fileList) { this.fileList = fileList } } } </script> ``` 3. 在 Vue 组件中定义 handleUploadChange 和 handleUploadRemove 方法,用于监听上传文件的变化和删除文件的操作,更新 fileList 数组。 后端实现: 1. 在 Spring Boot 项目中定义上传文件的接口。 ```java @RestController @RequestMapping("/api") public class FileUploadController { @PostMapping("/upload") public ResponseEntity<?> uploadFile(@RequestParam("file") MultipartFile[] files) { // TODO: 处理上传的文件 return ResponseEntity.ok("上传成功"); } } ``` 2. 在接口中使用 @RequestParam 注解接收上传的文件,可以使用 MultipartFile 类型的数组来接收多个文件。接收到文件后,可以根据需要进行处理,例如保存到本地磁盘或上传到云存储服务。 3. 在 application.properties 文件中配置文件上传的相关参数。 ```properties # 文件上传配置 spring.servlet.multipart.max-file-size=500KB spring.servlet.multipart.max-request-size=100MB spring.servlet.multipart.enabled=true ``` 其中,max-file-size 和 max-request-size 分别设置了单个文件和总文件大小的最大值,enabled 表示是否启用文件上传功能。 以上就是基于 Vue 和 Spring Boot 的多文件上传实现方式,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值