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取消请求
- 其中使用了模拟手动暂停请求,当切片数大于90取消请求
服务端
- 接收查询文件filename,查找临时存储的文件地址,判断是否存在对应上传文件
- 从未上传过此文件,则返回0,切片数从0开始
- 已上传过文件,则返回对应切片数
- 接收上传文件切片,文件存入临时存储目录
- 通过count和total判断切片是否上传完毕
- 上传完毕,创建文件保存目录,并创建可写流,进行写入操作
- 提取对应临时文件放入数组,循环文件目录数组,依次读取并写入文件buffer
- 写入完毕,关闭可写流。
小结
以上代码涉及到具体的业务流程会有所更改或偏差,这只是其中一种具体实现的方式。
希望这篇文章能对大家有所帮助,如果有写的不对的地方也希望指点一二。
以上代码地址:github.com/surprise-li…
以上就是node.js实现断点续传的详细内容,更多关于node.js 断点续传的资料请关注其它相关文章!