大文件分片上传时断网导致分片丢失怎么处理?
在实现大文件上传时,用分片+断点续传的方法,但用户上传超过1GB视频时突然断网,发现有的分片丢失了,搞不懂哪里出错了。
尝试用resumable.js实现,设置分片大小5MB,但后端返回错误说”分片0已存在,但分片1丢失”。前端代码里用fetch发送分片时,用过catch捕获错误后重试,但重试时还是找不到丢失的分片序号。
这是分片上传的核心代码片段:
function uploadChunk(chunk) {
const url = `/upload?fileId=${fileId}&chunk=${chunk.index}`;
return fetch(url, {
method: 'POST',
body: chunk.data
}).then(res => res.json());
}
试过设置重试次数但没用,断网后服务端好像没记录分片状态,有没有更好的状态同步方案?
前端改造成这样:
后端需要实现三个接口:
1.
/status返回该文件已上传的分片列表2.
/upload接收分片数据并保存3.
/merge合并所有分片为完整文件复制过去试试,记得调整chunkSize和重试次数。