如何触发Uploadify onError事件处理程序?

时间:2010-01-10 06:06:38

标签: javascript jquery upload uploadify

我正在使用Uploadify上传文件。问题是,我需要在处理这些文件时告知用户任何错误。

Uploadify有onErroronCompleteonAllComplete事件处理程序,但我不知道如何触发这些事件,以便向用户通知正在发生的事情。

我是否需要发送JSON字符串?有一条线索herehere以及here,但我无法使其发挥作用。也许论坛中的帖子已经过时了。

任何人都有任何适用于Uploadify 2.1的例子吗?

3 个答案:

答案 0 :(得分:4)

onError符合uploadify:

的选项
$("#fileInput").uploadify({
  onError: function(e, q, f, o) {
    alert("ERROR: " + o.info);
  }
});

来自Documentation

  

在上载过程中发生错误时触发的函数。默认事件处理程序将错误消息附加到返回错误的队列项,并将其队列项容器更改为红色。

     

向函数发送了四个参数:

     
      
  • 事件:事件对象。
  •   
  • queueID :返回错误的文件的唯一标识符。
  •   
  • fileObj :包含有关所选文件详细信息的对象。      
        
    • 名称 - 文件名称
    •   
    • 大小 - 文件的大小(以字节为单位)
    •   
    • creationDate - 创建文件的日期
    •   
    • modificationDate - 文件修改的最后日期
    •   
    • 类型 - 以“。”
    • 开头的文件扩展名   
  •   
  • errorObj :包含有关返回错误的详细信息的对象。      
        
    • 类型 - “HTTP”,“IO”或“安全”
    •   
    • info - 描述返回错误类型的错误消息
    •   
  •   

答案 1 :(得分:2)

这让我很伤心,但我找到了办法。在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默认函数存在,同时扩展它。

希望这有帮助!

答案 2 :(得分:0)

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);
},