Javascript Jquery中的FormData内容长度限制,Ajax在使用带有FormData的数组发送大型图像文件时

Javascript Jquery中的FormData内容长度限制,Ajax在使用带有FormData的数组发送大型图像文件时,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,我有3个图像或多个图像阵列,其总大小约为29mb或以上。我尝试使用Ajax和表单数据在服务器端发布它。但当我试图在MVC中使用FormData发布大数据时,它显示了错误。是否有任何解决方案。当我试图发布数据时,客户端显示错误意味着进入request.fail部分 这是我的Jquery代码 var filess = new Array(); var num = 4; var IsAlready = false; $(document).ready(function() { documen

我有3个图像或多个图像阵列,其总大小约为29mb或以上。我尝试使用Ajax和表单数据在服务器端发布它。但当我试图在MVC中使用FormData发布大数据时,它显示了错误。是否有任何解决方案。当我试图发布数据时,客户端显示错误意味着进入request.fail部分

这是我的Jquery代码

 var filess = new Array();
var num = 4;
var IsAlready = false;
$(document).ready(function() {
    document.getElementById('pro-image').addEventListener('change', readImage, false);

    $( ".preview-images-zone" ).sortable();

    $(document).on('click', '.image-cancel', function() {
    debugger;
        let no = $(this).data('no');
        let Id = this.id;
        $(".preview-image.preview-show-"+no).remove();
        for (var i = 0; i < filess.length; i++) {
          debugger;
             filess = $.grep(filess, function(value) {
  return value.name != Id;
        });
}
    });
});

function readImage() {

    if (window.File && window.FileList && window.FileReader) {
        var files = event.target.files;
        var output = $(".preview-images-zone");

          for (var i = 0; i < files.length; i++) {

             $.grep(filess, function (n) {
                 if (n.name == files[i].name) {
                     IsAlready = true;
                 }
             })
             if (IsAlready)
             {
                 alert("Same Name File Exist");
                  $("#pro-image").val('');
                  IsAlready = false;
                 return false;
             }
        }

        var anyWindow = window.URL || window.webkitURL;
          for (var i = 0; i < files.length; i++) {

            filess.push(files[i]);
        var file = null;
             file = files[i];

            if (!file.type.match('image')) continue;
            var objectUrl = anyWindow.createObjectURL(files[i]);
            var html =  '<div class="preview-image preview-show-' + num + '"  >' +
                            '<div class="image-cancel" data-no="' + num + '" id="' + files[i].name + '">x</div>' +
                            '<div class="image-zone"><img id="pro-img-' + num + '" src="' + objectUrl + '"></div>' +

                            '</div>';

                output.append(html);
                num = num + 1;

            window.URL.revokeObjectURL(files[i]);
        }
       $("#pro-image").val('');
    }
    else {
        console.log('Browser not support');
    }

}

$("#submit").click(function () {
    event.preventDefault();
    debugger;
    var url = "/Administration/CreateAlbum";
    var albumName = $("#AlbumName").val();
    var albumDescription = $("#AlbumDescription").val();
    var IsActive = $("#IsActive").val();
    var filess = new Array();
    var data = new FormData();
    data.append('albumName', albumName);
    data.append('albumDescription', albumDescription);
    data.append('IsActive', IsActive);
    $("#submit").prop("disabled", true);

    for (var i = 0; i < filess.length; i++) {

        data.append('image', filess[i] );
    }

    var request = $.ajax({
        url: url,
        enctype: 'multipart/form-data',
        type: 'POST',
        processData: false,
        contentType: false,
        cache: false,
        timeout: 600000,
        data: data
    });

    request.done(function (response) {
        $("#resultCode").html(response.ResultCode);
        $("#resultMessage").html(response.ResultMessage);
        $('#reasonCode').val("");
        $('#quantity').val("");
        $('#inventoryCode').val("");
        $('#unitCost').val("");


    });
    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });

});
用于大文件上传

ini_设置“上传最大文件大小”、“10M”;ini_设置“立柱最大尺寸”、“10M”

您的文件数组为空,无需指定enctype。这里是阿贾克斯

var files = array();
如果您有多个文件,那么像

 data.append('image[]', filess[i] );





var filess = new Array();
var num = 4;
var IsAlready = false;
$(document).ready(function() {
    document.getElementById('pro-image').addEventListener('change', readImage, false);

    $( ".preview-images-zone" ).sortable();

    $(document).on('click', '.image-cancel', function() {
    debugger;
        let no = $(this).data('no');
        let Id = this.id;
        $(".preview-image.preview-show-"+no).remove();
        for (var i = 0; i < filess.length; i++) {
          debugger;
             filess = $.grep(filess, function(value) {
  return value.name != Id;
        });
}
    });
});

function readImage() {

    if (window.File && window.FileList && window.FileReader) {
        var files = event.target.files;
        var output = $(".preview-images-zone");

          for (var i = 0; i < files.length; i++) {

             $.grep(filess, function (n) {
                 if (n.name == files[i].name) {
                     IsAlready = true;
                 }
             })
             if (IsAlready)
             {
                 alert("Same Name File Exist");
                  $("#pro-image").val('');
                  IsAlready = false;
                 return false;
             }
        }

        var anyWindow = window.URL || window.webkitURL;
          for (var i = 0; i < files.length; i++) {

            filess.push(files[i]);
        var file = null;
             file = files[i];

            if (!file.type.match('image')) continue;
            var objectUrl = anyWindow.createObjectURL(files[i]);
            var html =  '<div class="preview-image preview-show-' + num + '"  >' +
                            '<div class="image-cancel" data-no="' + num + '" id="' + files[i].name + '">x</div>' +
                            '<div class="image-zone"><img id="pro-img-' + num + '" src="' + objectUrl + '"></div>' +

                            '</div>';

                output.append(html);
                num = num + 1;

            window.URL.revokeObjectURL(files[i]);
        }
       $("#pro-image").val('');
    }
    else {
        console.log('Browser not support');
    }

}

$("#submit").click(function () {
    event.preventDefault();
    debugger;
    var url = "/Administration/CreateAlbum";
    var albumName = $("#AlbumName").val();
    var albumDescription = $("#AlbumDescription").val();
    var IsActive = $("#IsActive").val();
    var filess = new Array();
    var data = new FormData();
    data.append('albumName', albumName);
    data.append('albumDescription', albumDescription);
    data.append('IsActive', IsActive);
    $("#submit").prop("disabled", true);

    for (var i = 0; i < filess.length; i++) {

        data.append('image', filess[i] );
    }

    var request = $.ajax({
        url: url,
        enctype: 'multipart/form-data',
        type: 'POST',
        processData: false,
        contentType: false,
        cache: false,
        timeout: 600000,
        data: data
    });

    request.done(function (response) {
        $("#resultCode").html(response.ResultCode);
        $("#resultMessage").html(response.ResultMessage);
        $('#reasonCode').val("");
        $('#quantity').val("");
        $('#inventoryCode').val("");
        $('#unitCost').val("");


    });
    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });

});

如前所述,您需要在web.config中设置maxAllowedContentLength

 <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="YOUR SIZE"  />
      </requestFiltering>
    </security>
  </system.webServer>

谢谢

您遇到了什么错误,请在此描述您提供的代码仅初始化文件实际数组为空。它转到请求失败部分并向我显示警报文件上载控件的引用在哪里?i、 e.type=file???我应该检查web.config中的maxRequestLength和maxAllowedContentLength设置。如果您没有设置它们,那么就这样做。看看这里。我没有在这里为数组编写代码。在数组中有文件我想知道FormData Content Lenth LimitNope,没有大小上传限制,但是max data没有使用FormData发布为什么?如果你得到最大文件上传大小的错误,那么你需要设置;允许上载文件的大小。上传最大文件大小=40M;必须大于或等于upload_max_filesize post_max_size=40是的,我在这里更新了HTML,也检查一下@Mayank Majithiya,我不知道是什么错误。但是,如果我发送小数据,那么它可以工作,但25-30 Mb或以上的不是post