2016-04-11 47 views
2

ファイルを選択したときにファイルがキューに追加されると、このファイルがすぐに選択されることがあります。Jqueryファイルで複数ファイルのアップロードを処理する方法

問題は、アップロードの開始時に、各ファイルが別々のXHR接続と別々の要求を開くことです。これは2つの主な理由でOKではない、ユーザーが100ファイルを選択した場合、100の同時接続!!接続が失敗し、アップロード全体が失敗し、私は別のものを試しましたが、どれも動作しませんでしたが、これに対する回避策はありますか?並行アップロードを制限することがありますか?それだけで(チャンクのアップロードを使用して、私はマルチパートを使用していないよ

  1. をやっているかについていくつかの情報をここで

    アップロードマルチパートで働くあるので、私はそれはオプションだとは思いません)。

    ユーザは別のディレクトリからファイルを選択することができます(希望するたびに入力をクリックしてファイルをキューに追加することができます)。

そして、ここで私が使用しているコードです:

// 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)); 
}); 

答えて

0

たデフォルトはfalse sequentialUploadsオプションがあります。 trueに設定してみてください。

sequentialUploads(デフォルト:false)の代わりに同時要求の 順番にすべてのファイルアップロード要求を発行するためにこのオプションをtrueに設定し

あなたは(あなたが1つを得た場合)のようにコールバックを使用して、視覚的なキューを更新することができます。個々のファイルの処理キューの成功の終わりのための

fileuploadprocessdone

コールバック。

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

+0

感謝、私は、順次アップロードをしたくない、私は、同時接続のアップロードをしたいが、(limitConcurrentUploadsのような)アクティブな接続を制限します。そして、あなたは "ファイル処理オプション"が私のキューハンドラのより良い解決策だと思いますか? (今使っていた "fileList"配列の代わりに) – Mojbala

+0

私は 'limitConcurrentUploads'が動作するはずなので、理解できません。それはあなたのために働いていないのですか? – p1100i

+0

いいえ動作しない:-(私は分かりませんが、問題はforeachがキューを送信するためのファイルをforeachしていると思いますが、fileList配列の代わりにキューを処理する解決策が見つかったら、 '' 'limitConcurrentUploads '' 'うまくいく... – Mojbala

関連する問題