Dropzone.js 提交多个 ID

Dropzone.js submit for multi ids

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

这是我们用来提交的一个onclick提交函数

我选择了所有行 ID 2. 将其收集到具有不同 url 的 ids 数组中 (forms/upload_files/'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();

}

有什么建议吗

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

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

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