2012-07-03 89 views
0

所以我使用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。這意味着這種嘗試只適用於一次上傳一個文件的情況。

所以,我的問題是:什麼是讓留在隊列中的文件數量的最佳方式,或最終(甚至更好)調用的事件,每次隊列完成?我知道很多人都有這樣的問題,但我還沒有找到一個單一的解決方案,我已經能夠得到的工作!

謝謝!

回答

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

在FileUploaded事件檢查up.total.queued

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