2013-03-25 7 views
0

웹 서버에서 실행되는 응용 프로그램을 통해 파일 서버의 파일을 다운로드 할 수 있도록해야한다는 요구 사항이 있습니다. 사용자가 응용 프로그램 페이지에서 사용 가능한 링크를 클릭하면 다른 이름으로 저장 대화 상자가 나타납니다. 이런 종류의 유스 케이스는 꽤 일반적이며 기본적인 것에 대해 이야기하고있을 수도 있습니다.하지만 누군가 내 후속 가정이 맞는지 확인할 수 있으면 감사하겠습니다.- 클라이언트에 스트리밍 파일이 서버 메모리를 차지합니까?

1) 응용 프로그램에서 (링크로) 액세스 할 수 있도록 웹 서버의 가상 디렉터리를 통해 가상으로 매핑 된 파일 서버의 파일을 사용하면 콘텐츠 처리를 사용하여 클라이언트에 직접 스트리밍 할 수 있습니다 (코드 대답 here과 유사). 스트리밍 목적으로 파일을 처리하거나 청크 할 코드가 전혀 필요하지 않습니다.

2) 파일이 파일 서버에서 직접 스트리밍되기 때문에 웹 서버는 메모리 나 디스크 사용에 영향을받지 않습니다 (CPU는 물론 사용됩니다).

감사

+0

데이터를 스트리밍하는 방법에 따라 다릅니다. 모든 바이트가 메모리에서 읽혀지기 때문에 파일을 전송하는 동안 그 대답에 표시된 방법은 메모리에 영향을 미칩니다. 사용중인 코드를 표시하면 도움이됩니다. – nunespascal

+0

아직 코드를 작성하지는 않았지만 공유 한 링크에 비슷한 패턴의 쇼를 사용하려고합니다. 파일 서버에서 파일을 다운로드 할 때 실제로 웹 서버의 메모리 및 디스크 사용을 방해하지 않는 방법을 찾고 있습니다. 코드가 "웹 서버"메모리를 차지할 것이라 확신합니까? 저를 놀라게합니다. 내 이해는 파일 서버에서 직접 스트리밍되기 때문에, 메모리를 차지하거나 웹 서버의 디스크를 문제가되지 않을 수도 있습니다. 감사하고 답변을 주셔서 감사합니다. – Lalman

+0

사실 내가 공유 한 링크는 로컬 "웹 서버"의 파일을 사용하지만 내 경우에는 파일 서버를 가리키는 가상 디렉터리를 가리킬 예정입니다. 이 경우 파일 서버 디스크 사용량이 올라갈 수 있지만 메모리가 아닐 수도 있지만 웹 서버 디스크 또는 메모리가 올바르게 영향을받지는 않습니까? 감사합니다 – Lalman

답변

2

직접 파일을 작성하고 최소로 메모리 풋 프린트를 유지하기 원하기 때문에, HttpResponse.TransmitFile

사용을 고려은 버퍼링하지 않고 HTTP 응답 출력 스트림, 에 직접 지정된 파일을 씁니다 메모리에.

내 지식은 asp.net을 통해 작성해야하는 경우 응답에서 파일을 보내는 가장 효율적인 방법입니다.

Response.AppendHeader("Content-Disposition", "attachment; filename="+ fileName); 
Response.TransmitFile(fullPath); 
Response.Flush(); 
Response.End(); 
+0

이것은 정확히 내가하고 싶었을 수도 있습니다. 감사합니다 nunespascal! – Lalman