使用Dropzone使用不同的ID将多个文件提交到多种表单 但只提交最后一个ID
这是我们过去用来提交的onclick提交功能
我选择了所有行ID 2.使用不同的网址(forms / upload_files /'id')将其收集到id数组中
这是Dropzone功能
if($('#dropzoneDragArea').length > 0){
submitDropzone = new Dropzone("#id-form", $.extend({},_dropzone_defaults(),{
autoProcessQueue: false,
parallelUploads: 100,
uploadMultiple: true,
clickable: '#dropzoneDragArea',
previewsContainer: '.dropzone-previews',
addRemoveLinks: true,
maxFiles: 2,
}));
}
这是onclick函数
function submit(event) {
var ids = [];
var rows = $('.table-rows').find('tbody tr');
$.each(rows, function() {
var checkbox = $($(this).find('td').eq(0)).find('input');
if (checkbox.prop('checked') == true) {
submitDropzone.options.url = admin_url + 'forms/upload_file/' + checkbox.val();
ids.push(submitDropzone.options.url);
}
});
submitDropzone.processQueue();
}
请问有什么建议
答案 0 :(得分:1)
要使用相同的dropzone将一个或多个文件发送到多个URL,一个选项是处理队列,然后重新排队文件并更新选项中的URL,然后针对所需的每个不同的URL再次处理队列将文件发送到。
假设您已经拥有ids
数组,其中填充了您的Submit函数的网址,如下所示:
function submit(event) {
var ids = [];
// populate urls array
// submit the files to each url
for (let i = 0; i < ids.length; i++) {
submitDropzone.options.url = myUrls[i];
submitDropzone.processQueue();
// if there is still urls requeue the files
if (i !== myUrls.length - 1) {
for (let file of submitDropzone.files) {
if (file.status === Dropzone.SUCCESS || file.status === Dropzone.PROCESSING) {
file.status = Dropzone.QUEUED;
}
}
}
}
}
请注意,由于.processQueue()
不会上传已上传或正在处理的文件,因此您必须将状态更改为已排队。