2012-04-18 6 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

を使用してそれはそれらの両方を可能にするためにどのように 'doc'ファイルまたは' pdf'ファイル –

+0

だろうか? –

+1

@just_name各特定のファイルは、特定のアプリケーションによって処理されます。任意のバイナリファイルに 'application/octet-stream'を使うことができます。ユーザーはダウンロードプロンプトを表示し、ブラウザによっては使用するアプリケーションを選択することもできます。 – gideon

関連する問題