0

使用 Dropzone 使用不同的 id 将多个文件提交到多个表单,但它只提交最后一个 id

这是我们用来提交的onclick提交功能

我选择了所有行 id 2. 将其收集到具有不同 url (forms/upload_files/'id') 的 ids 数组中

这是 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();

}

请问有什么建议吗

4

1 回答 1

1

要使用相同的 dropzone 将相同的文件或文件发送到多个 url,一个选项是处理队列,然后重新排队文件并更新选项中的 url,并为要发送的每个不同 url 再次处理队列文件到。

假设您已经ids用 URL 填充了数组,您的提交函数可能如下所示:

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()不会上传已上传或正在处理的文件。

于 2018-08-13T10:16:55.693 回答