Dropzone.js提交多个ID

时间:2018-08-13 00:00:52

标签: javascript dropzone.js dropzone

使用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();

}

请问有什么建议

1 个答案:

答案 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()不会上传已上传或正在处理的文件,因此您必须将状态更改为已排队。