2012-07-22 18 views
1

我試圖在使用jquery file upload進行多個圖片上傳後刷新我的上傳頁面。如何只計算有效的jquery文件上傳?

我目前正在計算添加的文件的數量,然後如果它們匹配成功上傳的次數,那麼我刷新頁面。直到用戶嘗試上傳無效文件類型或太小的圖像時,此功能才起作用。我如何將這些故障作爲總計數的一部分?有沒有一個首選的方法來做到這一點?

$('#fileupload').fileupload({ 
     acceptFileTypes: /(\.|\/)(jpe?g|png)$/i 
    }); 

    var filesqueued = null; 
    var filesuploaded = 0; 

    $('#fileupload').bind('fileuploadadd', function (e, data) { 
     filesqueued = data.originalFiles.length; 
    }); 


    $('#fileupload').bind('fileuploaddone', function (e, data) { 
     filesuploaded = filesuploaded + 1; 

     if (filesuploaded == filesqueued) { 
      filesuploaded = 0; 
      location.reload(); 
     } 
    }) 
+0

我會假設你做你的驗證服務器端。你對「無效」文件上傳的迴應是什麼?基於響應,您可以在'fileuploaddone'回調中更新您的計數。 – 2012-07-22 22:20:59

+0

對於文件類型,驗證在客戶端完成。我已經在上面的例子中添加了這段代碼 – Paul 2012-07-22 23:28:44

回答

3

您可以使用jQuery文件上傳的內置事件綁定成功和失敗的事件:

$('#fileupload').bind('fileuploadcompleted', function (e, data) { 
    /* Successful upload */ 
     filesuploaded = filesuploaded + 1; 
}); 

$('#fileupload').bind('fileuploadfailed', function (e, data) { 
    /* Failed upload */ 
    // [...] 
}); 

這裏更多來自他們的文檔:https://github.com/blueimp/jQuery-File-Upload/wiki/Options

或者,你可以做任何事情服務器 - 側。讓你的上傳處理程序(jQuery的文件上傳的url選項)迴應:

<?php 
if ($valid == false) { 
    echo 'invalid'; 
    // or echo(json_encode(array('result' => 'invalid'))); 
} 

然後回到jQuery中分析返回的數據:

$('#fileupload').bind('fileuploaddone', function (e, data) { 
    /* Check returned data */ 
    // Could use JSON or simple text output 
    // if (data.result == 'invalid') { 
    if (data == 'invalid') { 
     // file did not pass 
    } else { 
     // file uploaded fine 
     filesuploaded = filesuploaded + 1; 
    } 

    if (filesuploaded == filesqueued) { 
     filesuploaded = 0; 
     location.reload(); 
    } 
}) 
相關問題