我有一个简单的功能,用户可以提交他/她过去和当前项目的详细信息,并且我正在使用dropzone,以便用户可以将相关文档上载到他们的项目。因此,基本上,他们可以根据需要添加许多项目
当前,我将放置区设置为<h2 style="color: red;">{{hasErrors}}</h2>
,因此当用户放置文件时,该文件将自动上传。
autoProcessQueue: true,
我想要的所有dropzone实例都将通过一个单按钮触发器开始上传所有文件。
我的问题是,因为用户可以动态添加项目,所以单击按钮时不会触发拖放区
var dynamicDropzone = new Dropzone(element, {
autoProcessQueue: true,
addRemoveLinks: true,
parallelUploads: 1,
maxFilesize: 5,
acceptedFiles: 'image/*,application/pdf',
dictDefaultMessage: '<div class="dz-default dz-message"></div>',
url: tempURL + 'upload.php',
params: {
'userID': current_user_id,
},
$("#button").click(function (e) {
e.preventDefault();
dynamicDropzone.processQueue();
});
答案 0 :(得分:4)
您需要保留autoProcessQueue: false
,以便在放置文件时Dropzone不会自动上传文件。
然后单击按钮,您需要告诉Dropzone实例按以下方式处理队列:
$("#button").click(function (e) {
e.preventDefault();
dynamicDropzone1.processQueue(); // process dropzone instance 1
dynamicDropzone2.processQueue(); // process dropzone instance 2
});
这里已有更详细的答案:https://stackoverflow.com/a/46732882/9354303