欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node.js实现断点续传

程序员文章站 2022-03-07 07:53:58
方案分析切片 就是对上传视频进行切分,具体操作为: file.slice(start,end):返回新的blob对象 拷贝blob的起始字节 拷贝blo...

方案分析

切片

  • 就是对上传视频进行切分,具体操作为:
  • file.slice(start,end):返回新的blob对象
    • 拷贝blob的起始字节
    • 拷贝blob的结束字节

断点续传

  • 每次切片上传之前,请求服务器接口,读取相同文件的已上传切片数
  • 上传的是新文件,服务端则返回0,否则返回已上传切片数

具体解决流程

该demo提供关键点思路及方法,其他功能如:文件限制,lastmodifieddate校验文件重复性,缓存文件定期清除等功能扩展都可以在此代码基础上添加。

html

script

node服务端

upload_file

逻辑分析

前端

  • 首先请求上传查询文件是否第一次上传,或已存在对应的切片
    • 文件第一次上传,则切片从0开始
    • 文件已存在对应的切片,则从切片数开始请求上传
  • 循环切片数组,对每块切片文件进行上传
    • 其中使用了模拟手动暂停请求,当切片数大于90取消请求

服务端

  • 接收查询文件filename,查找临时存储的文件地址,判断是否存在对应上传文件
    • 从未上传过此文件,则返回0,切片数从0开始
    • 已上传过文件,则返回对应切片数
  • 接收上传文件切片,文件存入临时存储目录
    • 通过count和total判断切片是否上传完毕
    • 上传完毕,创建文件保存目录,并创建可写流,进行写入操作
    • 提取对应临时文件放入数组,循环文件目录数组,依次读取并写入文件buffer
    • 写入完毕,关闭可写流。

小结

以上代码涉及到具体的业务流程会有所更改或偏差,这只是其中一种具体实现的方式。
希望这篇文章能对大家有所帮助,如果有写的不对的地方也希望指点一二。

以上代码地址:github.com/surprise-li…

以上就是node.js实现断点续传的详细内容,更多关于node.js 断点续传的资料请关注其它相关文章!