2011-12-29 4 views
-1

asp.net 웹 응용 프로그램에서 일부 파일을 생성하여 클라이언트에게 보내야합니다. 그래서 메모리 스트림을 가지고 HTTP 응답에 버퍼를 보내는 메소드를 만들었습니다.파일 업로드, MemoryStream 대 FileInfo

잘 작동하지만 방금 다른 코드를 읽고 그 사람이 fileInfo를 사용하고 있습니다. 그래서 내가 올바르게 이해한다면 FileInfo는 서버 디스크에 쓰여진 "진짜"파일입니다.

그래서 어떤 것이 최선의 선택입니까? (있을 경우) 질문하는 것이 무엇입니까? 파일 크기에 관한 것입니까?

파일 저장에 신경 쓰지 않고 서버에 보낼 필요가 없습니다.

+0

FileInfo'FileStream 객체 생성에 도움이됩니다. '이렇게 .. MemoryStream과 FileStream 비교 – Reniuz

답변

2

FileInfo은 이미 파일 시스템에 저장된 파일에 대한 포인터 일뿐입니다. 콘텐츠에 액세스하려면 스트림을 사용해야합니다. 따라서 귀하의 경우에 파일을 서버에 저장하지 않으려면 MemoryStream을 사용하여 응답에 기록하십시오. 스트림은 또한 일부 데이터에 대한 포인터입니다. MemoryStream은 메모리에 저장된 데이터에 대한 포인터입니다. 따라서 먼저이 데이터를 메모리에로드해야합니다.

더 좋은 방법은 청크로 된 Response 개체에 직접 쓰는 것입니다. 이렇게하면 전체 파일 내용을 메모리에로드 할 필요가 없습니다. 그러나 이것은 파일을 어떻게 생성하는지에 달려 있습니다.

1

FileUpload 클래스를 사용하지 않는 이유는 무엇입니까? 필요한 모든 파일 스트림이 있다면 FileUpload.FileContent 속성을 사용할 수 있습니다. 그러나 장래에 당신이 그것에 관심을 갖고 그것을 저장하고 싶다면 간단히 FileUpload.SaveAs({path on server})입니다.

이 방법을 사용하면 현재 또는 미래의 구현 필요성에 관계없이 동일한 클래스/컨트롤을 사용할 수 있습니다.

자세한 내용은 관련 MSDN article.