我正在使用Uploadify上传文件。问题是,我需要在处理这些文件期间通知用户任何错误。
Uploadify 有onError
、onComplete
和onAllComplete
事件处理程序,但我不知道如何触发这些事件,以便用户了解正在发生的事情。
我需要发送 JSON 字符串吗?这里和这里和这里都有一个线索,但我无法让它工作。也许论坛上的帖子已经过时了。
有人有任何适用于 Uploadify 2.1 的示例吗?
onError
在uploadify的选项中:
$("#fileInput").uploadify({
onError: function(e, q, f, o) {
alert("ERROR: " + o.info);
}
});
上传过程中发生错误时触发的函数。默认事件处理程序将错误消息附加到返回错误的队列项,并将其队列项容器更改为红色。
四个参数被发送到函数:
- event:事件对象。
- queueID:返回错误的文件的唯一标识符。
- fileObj:一个对象,包含有关所选文件的详细信息。
- name - 文件的名称
- size - 文件的大小(以字节为单位)
- creationDate – 文件的创建日期
- modifyDate – 文件修改的最后日期
- type – 以“.”开头的文件扩展名</li>
- errorObj:一个对象,包含有关返回的错误的详细信息。
- 类型——“HTTP”、“IO”或“安全”</li>
- info – 描述返回的错误类型的错误消息
这要了我的命,但我找到了办法。在uploadify.php 文件中,我创建了所有验证。这里的不同之处在于我为每种类型的错误设置了 HTTP 4xx 代码。
if (! in_array($fileParts['extension'], $typesArray)) {
header("HTTP/1.1 405"); //any 4XX error will work
exit();
}
这会将“405”错误返回给 uploadify.js。
在我设置的文件中 $("#fileInput").uploadify() 我添加了“onError”函数。
'onError' : function(event, ID, fileObj, errorObj) {
var r = "<br />ERROR: ";
switch(errorObj.info) {
case 405:
r += "Invalid file type.";
break;
case 406:
r += "Some other error.";
break;
}
setTimeout('$("#fileInput'+ ID + 'span.percentage").html("'+r+'");',111);
}
这会强制 uploadify 默认函数存在,同时对其进行扩展。
希望这有帮助!
onError: function (a, b, c, d) {
if (d.status == 404)
alert('Could not find upload script. Use a path relative to: '+'<?= getcwd() ?>');
else if (d.type === "HTTP")
alert('error '+d.type+": "+d.status);
else if (d.type ==="File Size")
alert(c.name+' '+d.type+' Limit: '+Math.round(d.sizeLimit/1024)+'KB');
else
alert('error '+d.type+": "+d.text);
},