【发布时间】:2019-10-04 22:54:40
【问题描述】:
我正在尝试将 Dropzone.js 设置为同时处理多个文件,但还要以 1mb 块的形式上传每个文件。我似乎找不到合适的 DZ 配置。
当我在 DZ 的工作分块实现中添加“uploadMultiple: true”时,Chrome 会抛出此错误:“未捕获的错误:您不能同时设置:uploadMultiple 和分块。”
【问题讨论】:
标签: dropzone.js chunking multifile-uploader
我正在尝试将 Dropzone.js 设置为同时处理多个文件,但还要以 1mb 块的形式上传每个文件。我似乎找不到合适的 DZ 配置。
当我在 DZ 的工作分块实现中添加“uploadMultiple: true”时,Chrome 会抛出此错误:“未捕获的错误:您不能同时设置:uploadMultiple 和分块。”
【问题讨论】:
标签: dropzone.js chunking multifile-uploader
问题:“autoProcessQueue”设置为“false”,因为我只想在用户点击“提交”按钮时进行处理。即使“uploadMultiple”未设置为 true,只要队列是自动处理的,Dropzone 就会上传多个文件(可能是连续而不是同时)。
解决方案: 上传文件的所有块后,Dropzone.js 调用“chunksUploaded”。在第一个文件成功上传其所有块后,将“autoProcessQueue”选项重置为“true”。在“queueComplete”之后,将其设置回“false”以准备下一次上传。
请参阅此处的答案以了解 chunksUploaded 回调,在使用它连接上传后的块的上下文中:How to concatenate chunked file uploads from Dropzone.js with PHP?
有关开启/关闭 autoProcessQueue 的信息,请参阅此线程的结尾:https://github.com/enyo/dropzone/issues/462
Javascript 示例 sn-p:
(我去掉了所有 Dropzone 和 Ajax 选项以突出显示相关部分)
var myDropzone = new Dropzone(target, {
chunksUploaded: function(file, done) {
// ajax below posts to a script that merges the uploaded chunks of the current file
$.ajax({
success: function (data) {
myDropzone.options.autoProcessQueue = true;
done();
}
});
}
});
myDropzone.on("queuecomplete", function() {
myDropzone.options.autoProcessQueue = false;
});
【讨论】: