概述
应用开发过程中,文件上传是一个基础的扩展功能,它的目的就是让大家共享我们上传的文件资源。作为一名合格的程序猿,在开发过程中实现文件上传是必需的技能,常见的文件上传包括:
- 添加附件、文章封面等需求
- 富文本编辑器扩展的文件上传
文件上传原理
上传流程
说明: 文件上传本质就是通过程序将用户文件通过I/O流复制到服务器的过程
临时目录
文件上传过程中,文件不是直接存放在服务器真正的目录,而是要经过一个temp临时目录中转过后才上传到真实目录,临时目录存在的优势:
- 防止上传过程中因网络断开或者用户刷新或者取消而造成的大量的垃圾文件
- 保证服务器真实目录上传的文件一定是有效的(而不存在垃圾文件)
其中临时目录可以由我们自定义它的位置:
springboot的yml文件中配置:spring.servlet.multipart.location:D://data/upload/temp
SpringBoot实现本地文件上传
后台支持多文件上传核心代码
前台页面
a. 采用wangEditor富文本编辑器上传,参考官网提供的API实现
b. 采用web uploader上传,可参考官网实现
HTTP访问服务器文件资源
若我们需要通过HTTP获取到上传到服务器的文件,我们就需要做一个静态资源文件路径的映射
扩展
若我们公司内部服务器出现故障,而且服务器中文件只有一份,那我们文件就可能丢失,此时就需要采用分布式文件存储,常用解决方案如下
- Fastdfs,GDFS,但它们需要购买服务器自己去搭建,过程复杂且成本比较高
- FTP技术采用冗余同步到另外服务器上,但它需要保证高可用
- 阿里云/青牛/腾讯云/网易云的后台实现分布式存储OSS