swfupload 上传到服务器后,对任何非 200 的响应都认为是错误,会调用 upload_error_handler 回调。但是在回调里取不到服务器端输出的错误信息,只能得到响应码。
要在 swfupload 处理服务器的错误信息,只能通过 upload_success_handler 。也就是说,不管上传成功失败,都必须是 200 响应。然后输出不同的正文。比如,成功不输出内容,失败时输出错误信息。然后在 upload_success_handler 中通过 serverData 参数来判断。
如
function uploadSuccess(file, serverData) { try { var progress = new FileProgress(file, this.customSettings.progressTarget); progress.setComplete(); if (/^s*$/.test(serverData)) { progress.setStatus("ok"); } else { progress.setStatus(serverData); } progress.toggleCancel(false); } catch (ex) { this.debug(ex); } }
下次看到一定记得了!
恩,懂了啊
怎么不能匿名提交了?
呵呵,曾经就这样做,但是对于大文件,如果有错误,也要等文件传完才能显示的,所以这样做还不是很好的解决办法。
我目前的办法是用session传递错误,在 uploadProgress()中用ajax监测错误信息,每3秒监测一次,总共监测5次就停止监测,总共监测时间即为15秒,如果监测到错误就终止上传,清空队列,然后在uploadComplete()中可获取错误信息。