【问题标题】:How to handle multi file upload in Jquery File Upload properly如何在 Jquery File Upload 中正确处理多文件上传
【发布时间】:2016-08-01 16:34:20
【问题描述】:

我有一个队列,当用户选择文件时,文件将被添加到队列中,这些文件可能会或可能不会立即选择

问题是,在开始上传时,每个文件都打开单独的 XHR 连接和单独的请求,这不可行,主要有 2 个原因,如果用户选择 100 个文件,将有 100 个并发连接!!,以及 2,如果连接失败,整个上传将失败,我尝试了不同的方法,但它们都不起作用,有什么解决方法吗?也许限制并发上传?我不认为这是一个选项,因为它只适用于分段上传

这里有一些关于我在做什么的信息

  1. 我没有使用多部分(使用分块上传)。

  2. 用户可以从不同的目录中选择文件(我的意思是他/她可以在每次他/她想要的时候点击输入并将文件附加到队列中)。

这是我正在使用的代码:

// Upload queue array
var filesList = new Array();

$('#fileupload').fileupload({
  url: 'http://example.com/listener',
  maxChunkSize: 200000000,
  multipart: false,
  autoUpload: false,
  limitConcurrentUploads: 3,

  add: function(e, data) {
    // Just for rendering html table
    $.each(data.files, function(index, file) {
      $('#files table>tbody').append('<tr><td>' + file.name + '</td><td>' + humanFileSize(file.size) + '</td></tr>');
    });

    // Add to fileList array
    filesList.push(data);
  }
}).prop('disabled', !$.support.fileInput).parent().addClass($.support.fileInput ? undefined : 'disabled');

// Start upload button
$(document).on('click', '#startup', function() {
  filesList.forEach(function(data) {
    data.submit();
  });
});

// Clear queue button
$(document).on('click', '#clearqueue', function() {
  $('#files table>tbody').html('');

  // Clear queue
  filesList.length = 0;

  // Replace file input element
  $("#fileupload").replaceWith($("#fileupload").val('').clone(true));
});

【问题讨论】:

    标签: javascript jquery jquery-file-upload jqxhr


    【解决方案1】:

    sequentialUploads 选项默认为 false。尝试将其设置为true

    sequentialUploads(默认:false)

    将此选项设置为 true 以发出所有文件上传请求 顺序而不是同时请求。

    您可以使用以下回调来更新您的视觉队列(如果有的话):

    fileuploadprocessdone

    单个文件处理队列成功结束的回调。

    $('#fileupload').bind('fileuploadprocessdone', function (e, data) {});

    【讨论】:

    • 谢谢,但我不想要顺序上传,我想要并发连接上传​​,但限制活动连接(如limitConcurrentUploads)。您认为“文件处理选项”是我的队列处理程序的更好解决方案吗? (而不是现在使用的“fileList”数组)
    • 我不明白,因为那个用例 limitConcurrentUploads 应该可以工作。那不适合你吗?
    • 没有不工作 :-( ,我不知道为什么,但我想问题是 foreach 提交文件以提交我的队列,如果我找到了句柄队列而不是 fileList 数组的解决方案,可能是limitConcurrentUploads 工作正常...
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2012-04-07
    • 2020-12-08
    • 2015-09-02
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多