首页 > 其他分享 >大文件如何做断点续传?

大文件如何做断点续传?

时间:2023-02-09 16:45:27浏览次数:52  
标签:断点续传 文件 数据 如何 分片 临时文件 上传

一、是什么

不管怎么样简单的需求,当量达到一定层次时,都会变得遗异常复杂。就比如文件上次简单,但文件变大就复杂,
上传文件时,有几个因素会影响用户体验。

  1. 服务器处理数据的能力
  2. 请求超时
  3. 网络波动
    上传时间会边长,高频次文件上传失败,失败后又需要重新上传等,为了解决这些问题,我们需要对大文件上传单独处理。

1.分片上传

就是将你要上传的文件,按照一定大小,将整个文件分隔成多个数据块进行分片上传


上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。
大致流程如下:

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

2.断点续传

断点续传指的是在下载或上传时,将下载或上传任务人为的划分为几个部分
每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度
一般实现方式有两种:

  1. 服务器端返回,告知从哪开始
  2. 浏览器端自行处理
    上传过程中将文件在服务器写为临时文件,等全部写完了(文件上传完),将此临时文件重命名为正式文件即可
    如果中途上传中断过,下次上传的时候根据当前临时文件大小,作为在客户端读取文件的偏移量,从此位置继续读取文件数据块,上传到服务器从此偏移量继续写入文件即可

二、实现思路

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

三、使用场景

  • 大文件加速上传:当文件大小超过预期大小时,使用分片上传可实现并行上传多个 Part, 以加快上传速度
  • 网络环境较差:建议使用分片上传。当出现上传失败的时候,仅需重传失败的Part
  • 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见

小结

当前的伪代码,只是提供一个简单的思路,想要把事情做到极致,我们还需要考虑到更多场景,比如

  • 切片上传失败怎么办
  • 上传过程中刷新页面怎么办
  • 如何进行并行上传
  • 切片什么时候按数量切,什么时候按大小切
  • 如何结合 Web Worker 处理大文件上传
  • 如何实现秒传

参考文献

标签:断点续传,文件,数据,如何,分片,临时文件,上传
From: https://www.cnblogs.com/cat-eol/p/17105762.html

相关文章

  • 如何配置Docker代理
    目录下载clash运行clash更新docker.service重启docker下载clashwgethttps://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v1.13.0.gzgzi......
  • 如何选择专业的第三方软件检测服务机构?
    随着软件测试的发展,第三方软件检测服务机构逐渐兴起。专业的第三方软件检测机构相较于软件企业内部的测试团队,更具有公正权威性,且省心省力还极具性价比。然而很多有测试......
  • linux 中如何给普通用户增加管理员权限
     001、使用root用户编辑配置文件:vim/etc/sudoers在root  ALL=(ALL)    ALL行下面增加如下内容(其中liujiaxin02是普通用户名):liujiaxin02   ALL=(ALL)......
  • Linux系列教程(六)——Linux常用命令之文件搜索命令
    前一篇博客我们讲解了​​Linux链接命令和权限管理命令​​, 通过ln-s 链接名表示创建软链接,不加-s表示创建硬链接;还有三个更改权限的命令,chmod命令可以更改文件或......
  • 流量站如何选择目标关键词?
    流量站是一个专门做流量的网站,只为流量而生;流量站,站点放了很多的广告,引入大量广告,达到受益的目的。流量站如何选择目标关键词?1、流量站选择目标关键词要确定这个关键词的搜......
  • 使用CREATE_FILE_DEST创建pdb遇到的文件路径问题
    环境OS:Centos7DB:19.3.0.0一主一从dataguard############################创建pdb################################1.主库上查看db_create_file_dest参数SQL>show......
  • Linux文件与目录结构
    linux一切皆文件linux系统的目录结构/bin(/usr/bin、/usr/local/bin)是Binary的缩写,这个目录存放着最经常使用的命令/sbin(/usr/sbin、/usr/local/sb......
  • 国民应用QQ如何实现高可用的订阅推送系统
    国民应用QQ如何实现高可用的订阅推送系统https://mp.weixin.qq.com/s/4cjFM4XOlzu07QI3gswWoQ国民应用QQ如何实现高可用的订阅推送系统原创 许扬 腾讯云开发者 2023-......
  • WAV音频文件处理
    使用工具WinHex:Hex文件查看Goldwave:wav音频格式处理CoolEdit:音频格式处理Goldwave软件中怎么调采样率、比特率语音识别之wave文件(*.wav)格式、PCM数据格式介绍......
  • opencv读取视频文件
    #opencv读取视频文件importcv2importmatplotlib.pyplotaspltvc=cv2.VideoCapture('test.mp4')#检测视频打开是否正确ifvc.isOpened():oepn,frame=vc.read()......