【问题标题】:PLUpload Get Files Remaining?PLUpload 获取剩余文件?
【发布时间】:2012-07-03 17:13:05
【问题描述】:

所以我使用 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。这意味着此尝试仅在一次上传一个文件时才有效。

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

谢谢!

【问题讨论】:

    标签: javascript jquery queue bind plupload


    【解决方案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!');
            }
        });
    });
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        • 2014-05-16
        相关资源
        最近更新 更多