Jquery 上传文件,它有更多的大小,抛出使用ajax和MVC内存不足异常

Jquery 上传文件,它有更多的大小,抛出使用ajax和MVC内存不足异常,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,我正在尝试使用ajax和MVC上传一个文件,这段代码对于小文件来说运行良好,但如果大小超过,就会抛出内存不足异常 我的JQuery代码 $("#btn-upload-package").click(function (e) { e.preventDefault(); if ($("#frm-single-migrate").validationEngine("validate") == true) { var fileUpload = $("#frm_file_upload")

我正在尝试使用ajax和MVC上传一个文件,这段代码对于小文件来说运行良好,但如果大小超过,就会抛出内存不足异常 我的JQuery代码

$("#btn-upload-package").click(function (e) {
  e.preventDefault();
  if ($("#frm-single-migrate").validationEngine("validate") == true) {

    var fileUpload = $("#frm_file_upload").get(0);
    var files = fileUpload.files;

    var fileData = new FormData();
    fileData.append(files[0].name, files[0]);
    fileData.append('SourceName', $('#txt_source_package').val());

    $.ajax({
      type: "POST",
      url: '@Url.Action("UploadSourceAndVerify", "Home")',
      data: fileData,
      async:true,
      contentType: false, 
      processData: false, 
      cache: false,
      success: function (data) {
        if (data.IsError) {
          ShowAlert('Error..!', data.Error);
        }
        else {
          ShowAlert('Success', "File has been uploaded successfully");
        }
      },
      error: function (data) {
        alert("Please contact your administrator");
      }
    });
  }
});
MVC代码如下所示:

 public ActionResult UploadSourceAndVerify()
    {
        string SourcePackageName = Request.Form["SourceName"];
        HttpPostedFileBase file = Request.Files[0];
        string fname = Path.Combine(Server.MapPath("~/Uploads/"), file.FileName);  
        file.SaveAs(fname);

        return Json(JsonViewModel);
    }
当我试图获取Request.Files[0]时,它将内存抛出异常


请让我知道有什么方法可以上传大文件,我想我已经在配置文件中做了所有正确的事情

尝试更新你的
web.config
文件并增加允许的最大文件大小,如下所示

<configuration>
    <system.web>
        <!-- This will handle requests up to 1024MB (1GB) -->
        <httpRuntime maxRequestLength="1048576" timeout="3600" />
    </system.web>
</configuration>

<!-- IIS Specific Targeting (noted by the system.webServer section) -->
<system.webServer>
   <security>
      <requestFiltering>
         <!-- This will handle requests up to 1024MB (1GB) -->
         <requestLimits maxAllowedContentLength="1048576000" />
      </requestFiltering>
   </security>
 </system.webServer>


但也有可能是目标服务器没有足够的资源来处理这个大文件,并且内存不足。如果是这种情况,那么web.config将无法帮助您,因为计算机太弱,无法处理大型文件。也许你需要买更多的内存

尝试更新
web.config
文件,并增加允许的最大文件大小,如下所示

<configuration>
    <system.web>
        <!-- This will handle requests up to 1024MB (1GB) -->
        <httpRuntime maxRequestLength="1048576" timeout="3600" />
    </system.web>
</configuration>

<!-- IIS Specific Targeting (noted by the system.webServer section) -->
<system.webServer>
   <security>
      <requestFiltering>
         <!-- This will handle requests up to 1024MB (1GB) -->
         <requestLimits maxAllowedContentLength="1048576000" />
      </requestFiltering>
   </security>
 </system.webServer>


但也有可能是目标服务器没有足够的资源来处理这个大文件,并且内存不足。如果是这种情况,那么web.config将无法帮助您,因为计算机太弱,无法处理大型文件。也许你需要买更多的内存

正如@David Votrubec所说的,这是机器的问题,内存不足。谢谢大家给我们的宝贵建议。

告诉@David Votrubec,这是机器的问题,内存不足。感谢大家提供的有用建议

文件有多大?@Rorymcrossan文件大小为513MB,但将来可能会达到2GB。请不要在屏幕上截图显示您的代码。将实际的代码放入问题中,文件有多大?@rorymcrossan它是513MB,但将来可能会达到2GB。请不要将您的代码截屏。将实际代码放入问题中我仍然面临同样的问题,我的机器中有4GB RAM:(,谢谢你的建议,请让我知道任何其他可能性如果目标机器与你正在开发的机器相同,4GB内存可能不够。开发IDE可能消耗1GB左右,操作系统本身可能相同,然后你有一堆不同的程序、web浏览器等。文件处理需要相同的内存RAM也是。在任务管理器中上传后检查+期间的内存消耗,或者在IDEOk中进行一些评测谢谢,我已经检查过了,你说得对,机器几乎使用了80%的内存,我将尝试升级机器。我将面临同样的问题,我的机器中有4GB RAM:(,谢谢你的建议,请让我知道任何其他可能性如果目标机器与你正在开发的机器相同,4GB内存可能不够。开发IDE可能消耗1GB左右,操作系统本身可能相同,然后你有一堆不同的程序、web浏览器等。文件处理需要相同的内存RAM也是。在任务管理器中上传后检查+期间的内存消耗,或者在IDEOk中进行一些评测。谢谢,我已经检查过了,你是对的,机器几乎使用了80%的内存,我将尝试升级机器