2012-04-18 2 views
1

내 파일을 데이터베이스에 바이트로 저장했습니다.http 핸들러로 데이터베이스에 바이트로 저장된 파일을 여는 방법은 무엇입니까?

응용 프로그램 (예 : Microsoft Office, Acrobat Reader ... 등)을 사용하여 이러한 파일을 열거 나 다운로드하는 방법.

나는 generic handler으로이 작업을 수행 할 수 :


public class Attachement : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      try 
      { 
       byte[] Attachement = (byte[])AttachementDAL.ReadAttachement(int.Parse(context.Session["attch_serial"].ToString())).Rows[0]["attach_content"]; 

      } 
      catch (Exception ee) 
      { 
      } 

     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 

답변

1

당신은 올바른 MIME 유형 응답 스트림에 기입합니다. 당신은 MS 파일 형식의 MIME 형식 here의 목록을 찾을 수 있습니다. PDF의 경우 application/pdf입니다. 당신이 application/octet-stream

public void ProcessRequest(HttpContext context) 
{ 
    try 
    { 
    byte[] Attachement = 
      (byte[])AttachementDAL 
        .ReadAttachement(
         int.Parse(context.Session["attch_serial"].ToString()) 
        ).Rows[0]["attach_content"]; 

    context.Response.Clear(); 
    context.Response.ContentType = "application/msword"; 
    foreach(byte b in Attachement) 
    { 
     context.Response.OutputStream.WriteByte(b); 
    } 
    context.Response.OutputStream.Flush(); 
    } 
    catch (Exception ee) 
    { 
    } 
} 
+0

를 사용하여이를 일반 (모든 바이너리 파일)을 유지하려면이 –

+0

어떻게 둘 다 허용하는'doc' 파일이나'pdf' 파일이 될 수 있을까? –

+1

@just_name 각 특정 파일은 특정 응용 프로그램에서 처리됩니다. 어떤 바이너리 파일에 대해서도'application/octet-stream'을 사용할 수 있으며, 사용자는 다운로드 프롬프트를 볼 수 있으며, 브라우저에 따라서는 어떤 응용 프로그램을 사용할 지 선택할 수도 있습니다. – gideon