0

だから私はPLUploadを使ってファイルをアップロードしています。しかし、私は問題に遭遇しました。キューが完了したときにイベントを発生させようとしています。私は近くにいますが、そこには完全ではありません。ここを参照してください:

$(function() {
    var files_remaining = 0;

    // Setup flash version
    $("#flash_uploader").pluploadQueue({
        // General settings
        runtimes : 'flash',
        url : 'blah.php',
        max_file_size : '200mb',
        chunk_size : '1mb',

        // Flash settings
        flash_swf_url : 'plupload.flash.swf'
    });

    var uploader = $("#flash_uploader").pluploadQueue();

    uploader.bind('FilesAdded', function(up, file, res)
    {
        files_remaining++;
    });

    uploader.bind('FileUploaded', function(up, file, res)
    {
        files_remaining--;
        if (files_remaining == 0)
        {
            alert('Complete!');
        }
    });
});

最後の2つの.bind()使用法に注意してください。基本的に、アップロードされたファイルの数を把握するために変数を更新し、キューが完了したときに(それに基づいて)把握しようとしています。ただし、ご存知のとおり、FilesAddedはファイルごとに実行されるのではなく、任意の量のファイルがキューに追加されたときに実行されます。3つのファイルが追加された場合、FilesAddedは1回だけ呼び出されます。つまり、この試行は、一度に1つのファイルがアップロードされた場合にのみ機能します。

だから、私の質問はこれです:キューに残っているファイルの数を取得する、または最終的に(さらに良い)キューが終了するたびにイベントを呼び出すための最良の方法は何ですか?多くの人がこの問題を抱えていることは知っていますが、私が仕事を得ることができた単一の解決策を見つけられませんでした!

ありがとう!

4

2 に答える 2

1
$(function() {
    var files_remaining = 0;

    // Setup flash version
    $("#flash_uploader").pluploadQueue({
        // General settings
        runtimes : 'flash',
        url : 'blah.php',
        max_file_size : '200mb',
        chunk_size : '1mb',

        // Flash settings
        flash_swf_url : 'plupload.flash.swf'
    });

    var uploader = $("#flash_uploader").pluploadQueue();

    uploader.bind('QueueChanged', function(up, files)
    {
        files_remaining = uploader.files.length;
    });

    uploader.bind('FileUploaded', function(up, file, res)
    {
        files_remaining--;
        if (files_remaining == 0)
        {
            alert('Complete!');
        }
    });
});
于 2012-07-03T17:31:13.310 に答える
1

FileUploadedイベントでup.total.queuedを確認してください

uploader.bind('FileUploaded', function(up, file, res)
{
     if (up.total.queued == 0)
     {
         alert('Complete!');
     }
});
于 2015-05-09T14:58:23.897 に答える