-1

我正在使用 Uploadify 在 php(codeigniter) 中上传图像。使用 uploadify 包附带的示例 php 文件进行测试。有用。但是,我无法触发 onUploadError。示例 php 代码具有:

if (in_array($file_ext,$fileTypes)) {
    $newFileName = mt_rand() . time() . '.' . $file_ext;
    $targetFile = rtrim($targetPath,'/') . '/' . $newFileName;
    move_uploaded_file($tempFile,$targetFile);
    echo $newFileName;
} else {
    echo 'Invalid file type.';
}

js很简单,如下:

$('#file_upload').uploadify({
        'fileTypeDesc' : 'Image Files',
        'fileTypeExts' : '*.gif; *.jpg; *.jpeg; *.png',
        'swf'      : '/static/uploadify/uploadify.swf',
        'uploader'      : '/static/uploadify/uploadify.php',
        'onUploadError' : function(file, errorCode, errorMsg, errorString) {
            console.log('The file ' + file.name + ' errorCode ' + errorCode + ' errorMsg ' + errorMsg + ' errorString ' + errorString);
        },
        'onUploadSuccess' : function(file, data, response) {
            console.log(data);
        }
    });

Invalid file type.回显到前端时。被onUploadSuccess触发而不是onUploadError. 对我来说似乎很奇怪,没有迹象表明 uploadify 有来自 php.ini 的错误。

触发的唯一方法onUploadError是在回显之前设置非 200 http 标头。但是,onUploadError函数参数errorCode, errorMsg,errorString是 http 代码,并且回显内容(错误消息)会丢失。

更新

我修改了问题标题,所以它说出了我试图解决的真正问题。我已经找到了解决方案。

4

1 回答 1

0

我终于有时间解决这个问题,这是我解决它的步骤。

一、onUploadError未触发的问题是因为文件已经上传成功

其次,无论后端检测到错误的图像尺寸,uploadify 队列限制和上传限制都会在成功上传后相应更新。

所以解决方案是我的后端检查图像尺寸并响应带有错误消息的 json 数据,该错误消息显示给用户。还重置uploadify,真的是swfupload,变量successful_uploads。确保 queuelimit 或上传限制没有搞砸。示例代码:

'onUploadSuccess' : function(file, data, response) {
    var obj = eval('(' + data + ')');
    if ( obj.success ) { alert('uploaded') }
    else { 
        var stats = this.getStats();
        this.setStats({successful_uploads: stats.successful_uploads - 1});
    }
 }

参见 swfupload setStats 方法http://demo.swfupload.org/Documentation/#setStats

于 2012-09-25T04:04:34.533 回答