2012-07-10 5 views
0

ASP.NET MVC에서 파일을 업로드하려면 단순히 <input type="file" ... />을 사용하고 양식을 게시 할 작업은 HttpPostedFileBase을 매개 변수로 사용합니다. 여태까지는 그런대로 잘됐다. 이제 질문은 : HttpPostedFileBase은 메타 데이터 만 포함하고 서버의 디스크에 임시 파일을 참조합니까, 아니면 객체가 실제 바이트를 포함합니까? 이것은 세션에서 HttpPostedFileBase을 유지하는 것이 매우 편리 할 수있는 시나리오를 가지고 있기 때문에 확장 성 때문에 중요합니다. 그러나 개체에 업로드 된 파일의 실제 바이트가 포함되어 있으면 서버의 메모리를 빠르게 채울 수 있습니다. .ASP.NET MVC HttpPostedFileBase 저장소

답변

2

데이터를 메모리에 보관합니다. 확장성에 대해 걱정이된다면 웹 팜을 계획해야 할 것이므로 세션에서 많은 항목을 갖는 것이 좋지 않을 것입니다. 아마도 파일이나 데이터베이스를 사용하여 직접 관리하고 세션에서 파일 이름/ID를 저장하는 것이 가장 좋습니다.

결정은 실제로 파일의 크기와 크기 및 파일로 수행 할 작업 (즉, 모든 요청이 필요하거나 지금부터 20 분 후에 일부 세션에서 하나의 파일이 필요함)에 달려 있습니다.

+0

정보 주셔서 감사합니다. 그 일에 대한 공식 출처가 있습니까? 왜냐하면 나는 어떤 성공도없이이 필사적으로 인터넷 검색을 해왔 기 때문이다. – chris

+2

[msdn] (http://msdn.microsoft.com/en-us/library/system.web.httppostedfile (v = vs.90) .aspx) _ 파일은 MIME multipart/form-data 형식으로 업로드됩니다. 기본적으로 양식 필드 및 업로드 된 파일을 포함하여 256KB보다 큰 모든 요청은 서버 메모리에 보관되는 것이 아니라 디스크에 버퍼링됩니다. _ 256KB 제한을 변경하는 방법이 있습니다. 그러나이 파일은 어떤 경우에도 버퍼링에 사용됩니다. 그것은 당신이 사용할 수있는 완벽한 파일이 아닙니다. 전체 스트림을 읽고 필요한 모든 작업을 수행해야합니다 (파일 또는 메모리에 저장) –