Jquery ajax fileupload在IE9标准中不起作用?

时间:2014-11-25 18:11:07

标签: javascript jquery ajax internet-explorer file-upload

Fileupload可以在任何地方工作,如chrome,IE10等。但是当我在IE9中测试My QA时,它失败了。动作控制器得到Request.Files即将到来' 0'长度文件。

IE9或我的代码有问题吗?

function initSimpleFileUpload() {
            console.log("initSimpleFileUpload");              
            $('#fileupload').fileupload({
                url: '../admin/image/uploadfiles',
                dataType: 'json',
                acceptFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/,
                add: function(e, data) {
                    jqXHRData = data;
                },
                done: function(event, data) {

                },
                success: function(data, status, xhr) {
                    // console.log(data);
                    // console.log(data.url);
                    if (data.message == "false") {
                        //alert("filename already exists");
                        $("#oops_dialog").html("@Html.Raw(i18n_Models_Image.ImageFileExists)");
                        $("#oops_dialog").dialog("open");
                    }
                    else if (data.message == 'checksumExists') {
                        $("#oops_dialog").html("@Html.Raw(i18n_Models_Image.ImageCheckSumSame)");
                        $("#oops_dialog").dialog("open");
                    }
                    else if (data.message == 'fileTagNotExists') {
                        $("#oops_dialog").html("@Html.Raw(i18n_Models_Image.ImageTagTextBox)");
                        $("#oops_dialog").dialog("open");
                    }
                    else if (data.message == 'unexpectedError') {
                        $("#oops_dialog").html("@Html.Raw(i18n_Models_Image.ImageUploadUnexpectedError)");
                        $("#oops_dialog").dialog("open");
                    }
                    else if (data.message == 'fileTagSame') {
                        $("#oops_dialog").html("@Html.Raw(i18n_Models_Image.ImageSameFileTagNotAllowed)");
                        $("#oops_dialog").dialog("open");
                    }
                    else if (data.message == "success") {
                        window.location = data.url;
                    }
                },
                fail: function(event, data) {
                    if (data.files[0].error) {
                        alert('@i18n_Models_Image.UploadCancelled');
                    }
                }
            }).on('fileuploadprogressall', function(e, data) {
                var progress = parseInt(data.loaded / data.total * 100, 10);
                $('.progress .progress-bar').css('width', progress + '%');
            });
        }


$('#fileupload').on('change', function(e) {
                if ($('#fileupload').length > 0) {
                    $('#lnkUploadSubmit').attr('disabled', false);
                    $('#divFileName').show();
                    $('.progress').show();
                } else {
                    $('#lnkUploadSubmit').attr('disabled', true);
                    $('#divFileName').hide();
                    $('.progress').hide();
                };
            });
            $('#fileupload').on('click', function(e) {
                console.log("click");
                $('#lnkUploadSubmit').attr('disabled', true);
                $('#divFileName').hide();
                $('#inputFileName').val('');

            });

控制器

 [HttpPost]
    [Route("Admin/Image/UploadFiles")]
    public ActionResult UploadFiles()
    {
        try
        {
            var files = Request.Files;
            //checking file types and file max size
            var errMsg = CheckFileTypesAndMaxSize(files);
            if (errMsg != "success")
            {
                Error(errMsg);
                return Json(new { message = "error", url = Url.Action("Index", "Image") }, JsonRequestBehavior.AllowGet);
            }

1 个答案:

答案 0 :(得分:0)

是的我猜想IE 9出了问题。您需要提交表单以将文件上传到服务器。 你可以在控制器中有一个方法,它将在页面提交时调用,这个方法将有一个像这样的参数... HttpPostedFileBase文件