对于大型文件,使用FormData的Ajax回调失败

时间:2015-05-07 10:54:37

标签: javascript ajax asp.net-mvc multipartform-data form-data

我有一个input file控件,我可以上传any kind个文件。 所以,我正在获取文件并storing in a FormData并向我的控制器发送ajax call。 它与Images和小.mp3文件一起工作正常。 但是当我上传.mp3文件超过5MB时,它将转到错误函数

我的代码是这样的:

 document.getElementById('fileUploadControl').onchange = function () {

        var data = new FormData();
        var files = $("#fileUploadControl").get(0).files;

        for (var i = 0; i < files.length; i++) {
            data.append("UploadedImage" + i, files[i]);
        }

        var ajaxRequest = $.ajax({
            url: '/Main/BroadcastFileUpload/',
            data: data,
            cache: false,
            contentType: false,
            processData: false,
            type: "POST",
            success: LoadImages,
            error: OnLogoFail
        });

        ajaxRequest.done(function (xhr, textStatus) {
        });
    };

 <input type="file" multiple id="fileUploadControl" style="width:0px;height:0px" />

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:6)

是的......我找到了解决方案。谢谢@artm

我已更改了web.config中的maxRequestLength

<httpRuntime targetFramework="4.5" maxRequestLength="2097151" />

答案 1 :(得分:0)

这主要是因为服务器端限制。它们的默认大小仅用于安全问题。如果使用Tomcat,则可以在server.xml中配置连接器以设置maxPostSize。大多数默认值是2MB。

它适用于任何带有ASP,JSP或PHP的服务器。可能是配置文件可能有所不同。

答案 2 :(得分:0)

document.getElementById(&#39; fileUploadControl&#39;)。onchange = function(){

    var data = new FormData();
    var files = $("#fileUploadControl").get(0).files;

    for (var i = 0; i < files.length; i++) {
        data.append("UploadedImage" + i, files[i]);
    }

    var ajaxRequest = $.ajax({
        url: '/Main/BroadcastFileUpload/',
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        type: "POST",
        success: LoadImages,
        error: OnLogoFail
    });

    ajaxRequest.done(function (xhr, textStatus) {
    });
};