大文件上传原理

大文件上传原理

当我们在做文件上传的功能时,如果上传的文件过大,可能会导致长传时间特别长,且上传失败后需要整个文件全部重新上传。因此,我们需要前后端配合来解决这个问题。

最常用的解决方案就是 —— 切片上传。

这次我们主要从以下三个方面来学习关于“大文件上传”的操作:

  1. 文件切片上传
  2. 文件秒传
  3. 文件断点续传

一、切片上传

切片上传,也叫分片上传。工作流程大致如下:

  1. 前端将一个大文件,拆分成多个小文件(分片);

  2. 前端将拆分好的小文件依次发送给后端(每一个小文件对应一个请求);

  3. 后端每接收到一个小文件,就将小文件保存到服务器;

  4. 当大文件的所有分片都上传完成后,前端再发送一个“合并分片”的请求到后端;

  5. 后端对服务器中所有的小文件进行合并,还原完整的大文件;

image-20220706171958054

二、文件秒传

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

工作流程大致如下:

  1. 上传文件前,将文件名发送到后端,来判断当前文件是否有上传完成过;
  2. 后端接收到文件名,查询上传成功的文件中是否有该文件,并返回查询结果给前端;
  3. 前端接收到查询结果,如果是已上传过的文件,则直接提示用户“上传成功”;

image-20220706174227432

三、断点续传

断点续传可以分为两种场景:

  • 用户点击“暂停”按钮时,终止文件的上传;再点击“续传”按钮时,继续上传剩下部分;

  • 用户在上传文件切片的过程中,由于外部原因(网络等)导致上传失败;后续重新上传时,可以接着上次失败的进度继续上传;

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

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

image-20220706175256251

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值