效果图

image.png
image.png

1.基于FileReader实现文件流读取

2.readAsArrayBuffer切片

3.基于spark-md5实现文件名的生成

4.上传文件大小以及切片数量确定

5.基于formdata上传

6.切片上传接口,切片合并接口

遇到的问题

1.文件重命名
Error: EXDEV: cross-device link not permitted, rename ‘C:\Users\xiao\AppData\Local\Temp\upload_a829a245f26bc8d737867a3427ff25ad’ -> ‘d:\mine-project\student-grade-system\uploads\36e9b1add9355982dfedc535ea42ddba\36e9b1add9355982dfedc535ea42ddba-9’
跨磁盘分区移动 或操作文件会有权限问题。
AppData\Local\Temp(缓存路径)
方法一:
主要利用fs的createReadStream、createWriteSream和unlinkSync方法
image.png
// fs.renameSync(req.files.file.path, chunksPath + hash + ‘-‘ + index);
var readStream = fs.createReadStream(req.files.file.path);
var writeStream = fs.createWriteStream(chunksPath + hash + ‘-‘ + index);
readStream.pipe(writeStream);
readStream.on(‘end’, function () {
fs.unlinkSync(req.files.file.path);
});
方法二:
这种就简洁很多了
添加一个 form.uploadDir=’tmp’ 即可(写一个临时路径)
form.uploadDir=’tmp’; // 详见Formidable使用
https://www.yuque.com/allblue-byynd/sfegqs/ru4au4

断点续传正在路上,敬请期待!