jquery uploadify插件:即使出现错误也会触发onAllComplete

时间:2011-03-01 17:32:20

标签: c# .net jquery asp.net asp.net-mvc

我正在使用jquery uploadify插件让用户上传个人资料图片。我正在使用ASP.NET MVC。我有一些我希望得到帮助的问题:

$popup.find('#fileInput').uploadify({
    'uploader': root + '/Content/Flash/uploadify.swf',
    'script': root + '/Profile/ChangeAvatar',
    'scriptData': { 'userName': $popup.find('#UserName').val(), 'token': $popup.find('#Auth').val() },
    'cancelImg': root + '/Content/Images/cancel.png',
    'auto': true,
    'multi': true,
    'fileDesc': 'Image Files',
    'fileExt': '*.jpg;*.png;*.gif;*.bmp;*.jpeg',
    'queueSizeLimit': 90,
    'sizeLimit': 4000000,
    'buttonText': 'Change Avatar',
    'width': 150,
    'folder': root + '/uploads',
    'onAllComplete': function (event, queueID, fileObj, response, data) {
        //if (data.filesUploaded == "1") {
        ShowMessage("Avatar uploaded successfully.");
        //}
    },
    'onError': function (event, ID, fileObj, errorObj) {
        var msg;
        if (errorObj.type === "File Size")
            msg = 'File size cannot exceed 4MB';
        else
            msg = "An error occured while attempting to upload your avatar."

        ShowMessage(msg);
        this.hide();
    }

1.即使出现错误,onAllComplete事件也会触发。我可以查看是否有错误?因为如果有错误我不想显示我的成功消息。

2.上传文件后,如果我尝试立即上传另一个文件,我收到错误“另一个进程正在使用该文件”。我知道问题可能是因为即使是第二次上传也使用相同的文件名(用户名)。但我不确定如何解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

你的第一个错误是由于onAllComplete与onAllSuccess(实际上并不存在)类似。就像在jQuery AJAX调用中一样,当javascript完成运行时,onComplete会触发,完全忽略是否发生了任何错误。但是,onAllComplete确实包含data参数,该参数具有属性“errors”,该属性是上载过程中发生的错误数的计数。通过检查该值,您可以确定它是干净的上传还是出现问题。

关于第二个错误,我真的不确定该怎么办。我以前遇到过同样的问题,不记得我是否设法解决了这个问题。我可以尝试的唯一建议是查看实际的php或cs或者你上传后用来实际保存的文件,并确保它挂起文件-stream并释放其对文件的使用。