2014-03-07 52 views
2

在這個插件,我們可以設置各種條件/對文件上傳限制(如acceptFileTypes,maxFileSize爲,maxNumberOfFiles,等..)blueimp jQuery的文件上傳不會引發錯誤的不成功添加

每當文件添加,一個事件被激發「fileuploadadd」,一旦文件被成功添加,另一個事件被激發「fileuploadadded」。

但是,當添加文件並且其中一個條件/限制失敗(例如,用戶嘗試上載2GB文件或文本文件而不是圖像)時,無法通過編程方式查明發生了這種情況。

當這種情況失敗時,不會觸發任何事件。我可以使用什麼來檢查文件用戶選擇的是否有錯誤,因此尚未添加到隊列中。

我能想到的唯一方法是它把一個點燃的「添加」事件和觀望,如果它不火「補充」事件再有一個問題。但是,我不想長時間停止所有處理,也不想過快檢查「」添加的「」事件是否已觸發。

OR

任何人都可以請指導如何從這個插件引發自定義事件(例如fileaddfailedevent)?

+0

請看看我的答案在這裏:http://stackoverflow.com/questions/15549094/jquery-file-upload-plugin-how-to-validate-files-on-add – Tomasz

回答

5

好吧,我想出了一個方法來觸發這個需求的自定義事件。如果有人想知道如何達到同樣的結果,請在這裏發佈答案。

,我們需要改變應該位於「JS \ jquery.fileupload-ui.js」

裏面添加回撥add: function (e, data) {最後聽者}).fail(function() {的核心文件。這應該是在大約行號120(取決於版本)

在我們需要添加下面一行:
that._trigger('addfileerror', e, data);

概括你的失敗,聽衆應該如下:

}).fail(function() { 
if (data.files.error) { 
    data.context.each(function (index) { 
     var error = data.files[index].error; 
     if (error) { 
      $(this).find('.error').text(error); 
     } 
    }); 
    // added custom event to check whether any error has occured while adding the file. 
    that._trigger('addfileerror', e, data); 
} 
}) 


現在我們可以像監聽器一樣綁定一個監聽器來檢查這個事件。

$('#fileupload').bind('fileuploadaddfileerror', function (e, data){ 
    console.log('Custom Error Event Fired'); 
}); 


希望這可以幫助別人。

UPDATE:

即使該文件沒有明確提到它,我剛纔得知「fileuploadprocessfail」事件不正是針對上述要求相同。

+0

好吧,但現在如何確切知道拋出哪個錯誤? –

相關問題