大文件上传
文件上传其实就是把二进制流传输给后端,后端在做处理。当文件特别大的是时候,会导致传输时间过程,过长的时间就会产生很多不可控性。
解决方案:文件切片。
一、切片上传
原理:将文件拆分为多个小文件,分别传给后端,传完之后后端再合并。
切片拆分:按指定长度把二进制流拆了。
二、文件秒传
文件秒传,其实指的是文件不用传。如果某一个文件,在之前已经上传成功过,再次上传时,就可以直接提示用户“上传成功”。
原理:上传前将文件名或指定规则唯一标识传给后端,判断一下是否传过。
三、断点续传
两种场景:
- 用户点击暂停,终止文件上传;再次点击上传时,继续上传剩下部分
- 由外部原因造成的上传失败;后续重传可接着上次传输进度继续上传。
两种场景的处理方式其实和“文件秒传”是一样的,工作流程大致如下:
- 文件上传(续传)前,将文件名发送到后端,来判断当前文件是否有上传成功过的部分切片文件;
- 如果有上传过部分切片,后端将上传成功的切片文件名返回给前端;
- 前端从所有切片中,将已经上传成功的切片筛选出来,再将剩下未上传成功的切片重新发送给后端;
- 后端将所有切片合并,完成整个文件的上传;