2016-06-22 1 views
0

ajax 및 MVC를 사용하여 파일을 업로드하려고하는데이 코드는 작은 파일에는 잘 작동하지만 크기가 초과되면 던지고 있습니다.크기가 더 크고 ajax 및 MVC를 사용하여 메모리 예외를 throw하는 파일 업로드

$("#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 코드는 다음과 같다 메모리 예외 밖으로 내 jQuery 코드 :

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], 그것은 예외

에서 메모리를 던지고 얻기 위해 노력하고 있어요

내가 설정 파일에 적절한 모든 일을 한 생각, 내가 어떤 식 으로든 큰 파일을 업로드 할 수있다 알려 주시기 바랍니다

+0

파일의 크기는 어느 정도입니까? –

+0

@RoryMcCrossan 513MB이지만 앞으로 2GB까지 올라갈 수 있습니다 –

+0

코드의 스크린 샷을 넣지 마십시오. 그 실제 코드를 질문에 넣으십시오. – Liam

답변

2

당신의 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> 

처럼, 최대 허용 파일 크기를 증가 그러나 대상 서버에 대용량 파일을 처리 할 충분한 리소스가 부족하여 RAM이 부족할 수도 있습니다. 이 경우 web.config는 시스템이 너무 약해 대용량 파일을 처리 할 수 ​​없기 때문에 도움이되지 않습니다. RAM을 더 구입해야할까요? :)

+0

여전히 동일한 문제에 직면하고 있습니다. 내 컴퓨터에 4GB RAM이 있습니다. (귀하의 제안에 감사드립니다. 다른 가능성을 알려주십시오. –

+0

대상 컴퓨터가 개발중인 IDE는 4GB 이상의 RAM으로는 충분하지 않을 것입니다. 개발 IDE는 약 1GB를 소비 할 수 있으며, OS 자체가 동일 할 수도 있고, 다양한 프로그램, 웹 브라우저 등이 있습니다. 파일 처리에도 동일한 RAM이 필요합니다. 작업 관리자에서 업로드 후 + 또는 IDE에서 프로파일 링을 수행 한 후 메모리 사용량을 확인하십시오. –

+0

감사합니다. 확인해 본 결과, 거의 80 %의 메모리를 사용하며 업그레이드 된 시스템을 사용하려고 시도합니다. –

0

@David Votrubec에게 말했듯이, 그것은 충분한 메모리가 부족한 컴퓨터의 문제였습니다. 모든 분들께 도움을 주신 모든 분께 감사드립니다.

+0

도움을 주셔서 감사합니다.) –