大文件切片上传和断点续传
前端(img为例)
- 前端用input选择文件file,
- 用spark-md5.js为file按内容起个hash名字(尽量独一无二),hashName
- 然后file.slice(start, end)按自己的需求(最多切多少片?每片最大size等)将文件切片,然后为每个切片按顺序命名,eg:第一片就叫hashName_1.jpg
- 用循环和new Form() + new XMLHttpRequest()将每一片都上传到服务器,传递的参数应该包含当前切片和总切片数量
后端
- 根据切片的名字创建一个文件夹叫hashName
- 用multiparty插件将前端传来的切片解析,并都写入hashName文件夹中
- 根据当前切片对应的文件夹里的切片数量和总切片数量对比,以此来知道传完没有
- 如果传完了:将文件夹内所有切片按切片名后面的数_1排列顺序,用后端语言指定的API将切片拼接成完整文件,最后删除掉文件夹和文件夹里的所有切片
断点续传
后端每次在接收切片的时候,到和该切片名字匹配的文件夹里看看这个切片是否已经存在,有的话就不用再传了,直接返回成功