-
计算md5,保证文件唯一性, 计算方式为md5(前2mb + 后2mb + 文件名 + 文件修改时间 + 文件大小), 得到文件唯一标识fileId(大部分情况够用)
-
Blob.slice 将文件分成若干个chunk,得到总分片次数total和数组 [{chunkNo, chunk}, ...]
-
记录fileId和未上传的chunkNo,保存到localStorage(合并成功后删除)
-
使用XMLHttpRequest上传文件,formdata包含3个字段fileId, chunkNo, file(该分片)
-
上传完成后通知后端合并文件fileId,fileName,total
-
将前端传来的chunk块保存到磁盘, tmp/${fileId}/0.chunk
-
收到合并请求后,按照分片名依次写入文件,返回文件url