大文件分片上传
前端对文件进行分割,给出总片数
后端把每个分片下载到一个临时文件夹下,按分片索引命名
当分片数达到总片数,进行分片合并
文件信息插入数据库,存文件的存放地址(本地或者OOS)
异步——生成完整文件,文件类型、存放到用户指定的目录下,删除临时文件
生成完整文件——就是把临时文件夹下的分片文件按照分片顺序,合并写入目的文件(读分片,写)
对于视频、图片类型的文件,需要生成一个缩率图作为封面————ffmpeg工具
秒传功能:就是先把文件信息入库,返回前端上传成功。再异步去写入服务器
RandomAccessFile
文件下载
-
一个方法,前端调用,后端返回一个下载码
-
前端拿着这个下载码,再去调用后端的下载方法
-
配置相应头等相关信息
-
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
-
response.setContentType("application/x-msdownload; charset=UTF-8");
-
-
用HttpServletResponse的输出流写给页面
-
为什么下载就不需要分片处理,而上传要呢?
文件存储
用户删除文件操作
- 和数据库的关联(逻辑删除还是物理删除——回收站功能?)
- 服务器文件删除的时机?