Dropzone JS分片上传问题:调用done()后仅上传1个分片
解决Dropzone分片上传仅完成1个分片就结束的问题
兄弟,我太懂你这个头疼的问题了!之前配置Dropzone分片上传时也踩过一模一样的坑——刚传完第一个分片,整个上传流程就直接结束了,剩下的分片根本没机会传。
你现在的问题根源很明确:在chunksUploaded函数里直接调用了done(),Dropzone会把这个操作当成「所有分片已上传完成」的信号,自然就停住了。确实得先判断所有分片都上传完毕,再调用这个方法才行。
给你修正后的配置代码,核心就是在chunksUploaded里做个判断:
Dropzone.options.myDZ = { chunking: true, chunkSize: 500000, // 设置500KB的分片大小 retryChunks: true, retryChunksLimit: 3, chunksUploaded: function(file, done) { // 对比已上传分片数和总分片数 if (file.upload.chunks === file.upload.chunkTotal) { // 所有分片都传完了,再通知Dropzone结束流程 done(); } // 还有分片没传的话,啥也不用做,Dropzone会自动继续上传下一个 } };
简单说下逻辑:每传完一个分片,Dropzone都会触发chunksUploaded函数。我们通过file.upload对象里的chunks(已传分片数)和chunkTotal(总分片数)来判断,只有当两者相等时,才调用done()告诉Dropzone可以结束上传流程了。
另外提醒一句,别忘确保后端也做好了分片合并的逻辑哦,不然前端传完所有分片,后端没把它们拼起来,还是拿不到完整文件的。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

