【前端知识之JS】大文件上传如何做断点续传

前言

本系列主要整理前端面试中需要掌握的知识点。本节介绍大文件上传如何做断点续传。


一、断点续传是什么

  • 不管怎样简单的需求,在量级达到一定层级时,就会变得异常复杂。虽然文件上传简单,但是文件变大就会变得复杂。
  • 上传大文件时,以下几个变量会影响我们的用户体验:
    • 服务器处理数据的能力;
    • 请求超时;
    • 网络波动。
  • 对大文件上次单独处理的方法有分片上传断点续传两个方法。

1、分片上传

分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(Part)来进行分片上传。
在这里插入图片描述
大致的流程如下:

  1. 将需要上次的文件按照一定的分割规则,分割成相同大小的数据块;
  2. 初始化一个分片上传任务,返回本次分片上传唯一标识;
  3. 按照一定的策略(串行或者并行)发送各个分片数据块;
  4. 发送完成后,服务器根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。

2、断点续传

  • 断点续传指的是在下载或上传时,将下载或上传任务人为的划分为几个部分。每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度。
  • 一般的实现方式有:服务器端返回,告知从哪开始;浏览器端自行处理。
  • 上传过程中将文件在服务器写为临时文件,等全部写完了(文件上传完),将此临时文件重命名为正式文件即可;
  • 如果中途上传中断过,下次上传的时候根据当前临时文件大小,作为在客户端读取文件的偏移量,从此位置继续读取文件数据块,上传到服务器从此偏移量继续写入文件即可。

二、实现思路

整体思路比较简单,拿到文件,保存文件唯一性标识,切割文件,分段上传,每次上传一段,根据唯一性标识判断文件上传进度,直到文件的全部片段上传完毕。
在这里插入图片描述

三、使用场景

  • 大文件加速上传:当文件大小超过预期大小时,使用分片上传可以实现并行上传多个Part,以加快上传的速度;
  • 网络环境较差:建议使用分片上传。当出现上传失败的时候,只需要重新传失败的Part;
  • 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传,这种场景在视频监控等行业应用中比较常见。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端文件上传指的是上传文件大小较大,超过了常规的文件上传限制(例如2MB)。这时需要使用特殊的上传方式,常见的有两种: 1. 分片上传:将大文件分成多个小文件,分别上传到服务器,并在服务器端将这些小文件合并成一个完整的文件。 2. 断点续传:将大文件分成多个小文件,分别上传到服务器,上传过程中若出现网络中断或其他原因导致上传失败,可以从失败的位置继续上传,避免重新上传整个文件实现前端文件上传断点续传需要使用一些第三方库或框架,例如: 1. Plupload:一个基于Flash和HTML5的文件上传库,支持分片上传和断点续传。 2. Resumable.js:一个基于HTML5的文件上传库,支持断点续传。 3. jQuery-File-Upload:一个基于jQuery的文件上传插件,支持分片上传和断点续传。 在使用这些库或框架实现文件上传断点续传时,需要注意以下几点: 1. 服务器端需要支持分片上传和断点续传,否则无法实现这些功能。 2. 分片上传和断点续传需要对文件进行切片,这可能会影响上传速度和文件完整性,需要好相应的处理。 3. 断点续传需要记录上传进度,以便在上传失败时能够从失败的位置继续上传。 总之,前端文件上传断点续传是一个比较复杂的问题,需要使用一些专门的库或框架来实现,同时需要注意一些细节问题,才能保证上传效率和上传成功率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值