我使用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
。对我来说似乎很奇怪,没有指示器来上传,因为php有错误。
触发onUploadError
的唯一方法是在回显之前设置非200 http标头。但是,onUploadError
函数参数errorCode
,errorMsg
,errorString
是http代码,并且回显内容(错误消息)丢失。
更新
我修改了问题标题,因此它说出了我试图解决的真正问题。我已经找到了解决方案。
答案 0 :(得分: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