2011-10-11 2 views
-1

가능한 중복 : 나는 SQL Server의 일부 MS 워드 문서를 저장
How to Download A file stored in SQL DB in Binary FormatASP.NET에서 DB의 데이터를 직접 다운로드하는 다운로드 링크를 만들려면 어떻게해야합니까?

. 내가 그들을 다운로드하고 싶을 때, 나는 그들을 서버에 파일로 저장하고 나서 사용자는 그것을 다운로드 할 수있다. 그러나 나는 파일을 서버 파일 시스템에 저장하는 것을 포함하지 않는 방법을 찾고있다. ...

+0

당신은 웹 서버의 응답에 직접 데이터를 입력 할 수 : 사용자 정의 핸들러 (시험에 응시하지 않은 추측)

는 Docs.ashx을했다. –

+1

제목이 귀하의 질문과 다릅니다. 너는 실제로 무엇을 묻고있는거야? – James

+0

@James - 둘 사이의 불일치가 실제로 보이지 않습니까? 그들은 먼저 파일 시스템에 저장하는 중간 단계없이 SQL Server에 보관 된 바이너리 데이터를 스트리밍하는 방법을 묻습니다. –

답변

2

You ' IHttpHandler를 구현하는 사용자 정의 HttpHandler가 필요합니다. MSDN의 IHttpHandler.ProcessRequest Method을 참조하십시오. 적절한 MIME 유형을 설정하고 데이터베이스에서 HttpContext의 OutputStream으로 이진 데이터를 리디렉션하십시오.

using System.IO; 
using System.Web; 

public class Docs : IHttpHandler 
{ 
    public void ProcessRequest (HttpContext context) 
    { 
     context.Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 
     using (var streamReader = new StreamReader("fileSourceForDemonstration.docx")) 
     { 
      streamReader.BaseStream.CopyTo(context.Response.OutputStream); 
     } 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 
+1

그런 식으로 할 수도 있지만 단일 .aspx 페이지에서 쿼리 문자열 매개 변수를 사용하면됩니다. 코드는 어느 쪽의 방법이라도 많이 동일 할 것이다. – Chris

+0

@Chris [이 질문에 대한 답] (http://stackoverflow.com/questions/1030433/byte-serving-pdfs-from-sql-varbinary)은 .aspx 방식으로 해결하는 것으로 보입니다. 다른 Chris에 의해 응답 됨 :-) – Oli

관련 문제