使用FormData和jQuery.ajax.post上传文件

时间:2014-04-23 14:18:01

标签: jquery asp.net ajax asp.net-mvc

当我在IE 8/9中使用FormData()上传文件时,它显示以下错误。请帮助....

网页错误详情

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) 时间戳:星期三,2014年4月23日14:06:30 UTC

消息:'FormData'未定义 行:6 查尔:13 代码:0

mycode的:

 $('#UploadImage').click(function () {
        var formData = new FormData();

        formData.append('file', $('input[type=file]')[0].files[0]);
        var filevalue = $('file').val();

        $.ajax({
            url: "/controller/action",
            data: formData,
            processData: false,
            contentType: false,
            type: 'POST',
            success: function (data, status, xhr) {
                $('#FileId').val(data);
                $('#file').val('');
                var msg = "You have successfully Uploaded a Image.";
                $("#Error").html(msg + xhr.status + " " + xhr.statusText);
                $('#dialog').show();
                $('#DialogMessage').text(msg);
                $("#dialog").dialog({
                    modal: true,
                    resizable: false,
                    buttons: {
                        "Yes": function () {
                            $(this).dialog("close");
                        }
                    }
                });
            },
            error: function (err) {
                if (status == "error") {
                    var msg = "Sorry but there was an error: ";
                    alert(msg);
                    $("#Error").html(msg + xhr.status + " " + xhr.statusText);
                }
            }
        });

    });

Html代码:

        <table class="dialogTable">
            <tr>
                <td><b>Select your file</b></td>
            </tr>
            <tr>
                <td>
                    <input type="file" name="file" id="file" accept="gif|jpeg|bmp|png|jpg" /></td>
            </tr>
        </table>

    <table>
        <tr>            
                <td>
                    <input type="button" id="UploadImage" value="Upload Image" />
                </td>
           </tr>

当我单击IE8中的UploadImage按钮时,在FormData()

中显示错误

1 个答案:

答案 0 :(得分:0)

@JayBlanchard部分正确。虽然您可以在现代浏览器中通过ajax上传文件,但这不包括IE9及更早版本。如果您使用的是IE9及更早版本,则必须创建一个包含定位隐藏iframe的<input type="file">元素的表单,然后提交表单。这将导致文件上载不会重定向您的主浏览上下文(窗口)。