blueimp jquery-file-upload不会在不成功的添加上抛出错误

时间:2014-03-07 02:44:17

标签: jquery javascript-events jquery-file-upload blueimp

在这个插件中,我们可以设置文件上传的各种条件/限制(例如acceptFileTypes,maxFileSize,maxNumberOfFiles等)。

每当添加文件时,都会触发一个事件“ fileuploadadd ”,一旦成功添加文件,另一个事件将被触发“ fileuploadadded ”。

然而,当添加文件并且它失败了这些条件/限制之一时(例如,用户尝试上传2GB文件或文本文件而不是图像),则无法以编程方式找出已发生这种情况。 / p>

当此条件失败时,不会触发任何事件。我可以使用什么来检查用户选择的文件是否有错误,因此尚未添加到队列中。

我能想到的唯一方法就是触发“ add ”事件并等待,看看它是否不会触发“添加”事件然后出现问题。但是,我既不想长时间停止所有处理,也不想太快检查“添加”事件是否已经触发。

OR

有人可以指导如何从此插件中引发自定义事件(例如 fileaddfailedevent )吗?

1 个答案:

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


希望这有助于某人。

<强>更新

即使文档没有明确提及,我刚刚了解到“fileuploadprocessfail”事件对上述要求的确完全相同。