PLUpload获取剩余文件?

时间:2012-07-03 17:13:05

标签: javascript jquery queue bind plupload

所以我正在使用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!');
        }
    });
});

注意最后两个.bind()用途。基本上,我正在尝试更新变量以确定已上载了多少文件,然后在队列完成时找出(基于此)。但是,您可能知道,FilesAdded不是基于每个文件运行,而是在将任意数量的文件添加到队列时运行。如果添加了三个文件,则只会调用一次FilesAdded。这意味着只有在一次上传一个文件时,此尝试才有效。

所以,我的问题是:获得队列中剩余文件数量的最佳方法是什么,或者最终(甚至更好)每次队列完成时调用一个事件?我知道很多人都有这个问题,但我没有找到一个解决方案,我已经能够开始工作了!

谢谢!

2 个答案:

答案 0 :(得分: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!');
        }
    });
});

答案 1 :(得分:1)

在FileUploaded事件中检查 up.total.queued

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