Skip to content

大文件上传

文件上传其实就是把二进制流传输给后端,后端在做处理。当文件特别大的是时候,会导致传输时间过程,过长的时间就会产生很多不可控性。

解决方案:文件切片。

一、切片上传

原理:将文件拆分为多个小文件,分别传给后端,传完之后后端再合并。

切片拆分:按指定长度把二进制流拆了。

二、文件秒传

文件秒传,其实指的是文件不用传。如果某一个文件,在之前已经上传成功过,再次上传时,就可以直接提示用户“上传成功”。

原理:上传前将文件名或指定规则唯一标识传给后端,判断一下是否传过。

三、断点续传

两种场景:

  1. 用户点击暂停,终止文件上传;再次点击上传时,继续上传剩下部分
  2. 由外部原因造成的上传失败;后续重传可接着上次传输进度继续上传。

两种场景的处理方式其实和“文件秒传”是一样的,工作流程大致如下:

  1. 文件上传(续传)前,将文件名发送到后端,来判断当前文件是否有上传成功过的部分切片文件;
  2. 如果有上传过部分切片,后端将上传成功的切片文件名返回给前端;
  3. 前端从所有切片中,将已经上传成功的切片筛选出来,再将剩下未上传成功的切片重新发送给后端;
  4. 后端将所有切片合并,完成整个文件的上传;