http://scarletsky.github.io/2015/01/27/javascript-upload-slice-file-using-blob/#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E4%BB%A3%E7%A0%81-nodejs
- 用户选择文件
- 判断文件大小
- 如果文件小于限定文件大小,则直接上传
- 否则进行分片上传
分片流程
- 给定限定大小。
- 利用
Blob
对象的slice
方法把文件分成 N 份。 - 遍历 N 次,利用
FormData
创建需要提交的数据,上传数据。
服务端处理流程
- 接收数据
- 判断数据总份数
- 如果总份数为 1,则直接保存成文件,文件名不需要改变。保存完成后,直接返回信息给客户端。
- 否则保存成文件时,文件名后缀名需要带上 .partX 来表示该文件为第几部分。
- 判断已上传的数据是否等于总份数。
- 如果相等,则合并文件。
- 合并完成后,删除带有 .partX 的文件。
代码实例
客户端代码 – html
|
|
客户端代码 – JavaScript
|
服务端代码 – NodeJS
|
文章作者 scarletsky