我想使用BlueImp / Jquery文件上传能够将一些图像上传到web webserver . 我有这个JS代码,我通过阅读许多来源生成
$('#file_upload').fileupload('option', {
dataType: 'json',
url: '/Upload/UploadFiles',
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
process: [
{
action: 'load',
fileTypes: /^image\/(gif|jpeg|png)$/,
maxFileSize: 20000000 // 20MB
},
{
action: 'resize',
maxWidth: 1440,
maxHeight: 900
},
{
action: 'save'
}
],
progressall: function (e, data) {
$(this).find('.progressbar').progressbar({ value: parseInt(data.loaded / data.total * 100, 10) });
},
done: function (e, data) {
$('#show_image').append('<img src="' + data.result[0].ThumbURL + '" />');
$('#imgID').val($('#imgID').val() + data.result[0].Id + ',');
$(this).find('.progressbar').progressbar({ value: 100 });
},
error: function (e, data) {
var a = 1;
}
});
});
它的工作原理是因为它不上传任何不是图像的文件,但我希望能够获得向用户显示的错误消息(如果存在) .
在their demo中,他们有一些代码(jquery.fileupload-ui.js和jquery.fileupload-fp.js)创建"magically" HTML并且里面有错误(我仍然需要了解它) .
如果我也应该使用这些插件并且以某种方式自定义生成的HTML,或者如果手动获取信息并填充它更简单,我真的不明白 .
我是JS和Jquery的新手,所以也许我错过了一些东西 .
如何配置正在生成的HTML或如何获取错误消息?
谢谢,奥斯卡
9 回答
使用
processfail
回调为此你可以使用文件添加的回调来验证文件,像这样,使用“return false”来避免添加该文件;
或者您可以像这样注册fileuploadadded回调,
您也可以使用;访问fileupload acceptFileTypes选项; e.originalEvent.data.fileupload.options.acceptFileTypes
您可以在这里找到更多信息;
https://github.com/blueimp/jQuery-File-Upload/wiki/Options
我知道这是一个旧线程,但如果有人仍在寻找如何获取错误消息,这是一种方法:
正如user2999209所提到的,正确的方法是使用
fileuploadprocessfail
回调 .要完成答案,如果您希望翻译错误消息,则应传递以下(未记录的)选项:
尝试上载文件类型错误的文件将导致显示消息“不允许AAA文件类型” .
如果您使用的是PHP服务器,我有一个更简单的解决方案 . 如果你不是,我相信这对你也有帮助 .
您不需要在前端使用acceptFileTypes参数 . 只需使用以下参数初始化PHP UploadHandler类:
当您传递不需要的文件类型或文件大小时,ajax返回将是类似的
要么
The order you load scripts is important 以使用默认验证过程显示错误消息,
This order works for me :
tmpl.min.js
jquery.ui.widget.js
jquery.iframe-transport.js
jquery.fileupload.js
jquery.fileupload-ui.js
jquery.fileupload-process.js
jquery.fileupload-validate.js
最好验证文件类型(它的格式类似于“image / jpeg”)而不是扩展 . 在这种情况下,您可以避免出现区分大小写和类似意外问题的潜在问题
如果您不熟悉javascript错误处理的工作方式,最好阅读以下主题:try/catch (MDN)
但是,错误实际上是fileupload原型中的一个方法,所以理论上这个函数将在错误发生时执行 .
只需将添加到方法中的errorHandler即可 .
如果此警报从未发生,则不会引发错误 . 以下代码通常是如何捕获它们的 . (它不会这样做吗?)
我在这些回答中找到的任何内容都没有为我工作,奇怪的是,为该插件编写演示的开发人员使用了与文档中描述的不同的风格 . 无论如何,这是不重要的 .
我复制了他们用来使UI版本工作的代码,这最终为我做了诀窍 . 他们使用.on方法和'processalways'来检查错误,而不是使用'error'或'fail'方法 .
view-source:http://blueimp.github.io/jQuery-File-Upload/basic-plus.html
这是源代码 .
干杯