2012-03-05 4 views
5

私は、画像ファイルや他のいくつかの文書をデータベースに格納してから、画像ボックスのWebページにそれらを表示する必要があるという点でWebアプリケーションを開発しています。私はデータベースにイメージを格納し、バイト配列の形でPDFファイルも格納しています。データベースからバイト配列を取得するために汎用ハンドラを使用し、イメージボックスでイメージを表示しますが、イメージは正常に動作しますが、 。イメージボックスにasp.net WebFormにSQL Serverで格納されたPDFのbtye配列を表示する方法?

public class ShowImage : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     Int32 imgID; 
     if (context.Request.QueryString["id"] != null) 
      imgID = Convert.ToInt32(context.Request.QueryString["id"]); 
     else 
      throw new ArgumentException("No parameter specified"); 

     context.Response.ContentType = "image/jpeg"; 
     byte[] buffer = ShowEmpImage(imgID); 
     context.Response.BinaryWrite(buffer); 
    } 

    public Stream ShowEmpImage(int empno) 
    { 
     dbClass db = new dbClass(); 
     string sql = "SELECT imgfile FROM myFiles WHERE id = @ID"; 
     SqlCommand cmd = new SqlCommand(sql, db.con); 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.AddWithValue("@ID", empno); 
     object img = null; 
     try 
     { 
      db.Connect(); 
      img = cmd.ExecuteScalar(); 
     } 
     catch 
     { 
      return null; 
     } 
     finally 
     { 
      db.Disconnect(); 
     } 
     return new MemoryStream((byte[])img); 
    } 

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

イメージボックスにPDFファイルやその他のファイルを表示するにはどうすればよいですか?実際に問題は私のアプリケーションが既存のアプリケーションで実行され、ファイルの拡張子を格納する方法がないため、ファイルを表示できる唯一の方法は「イメージとして表示」ですが、それらがより良い方法であれば友人を助けます。

答えて

1

イメージとして表現するときにPDFが機能しない理由があります。画像はではありません。さらに、それが"image/jpeg"であると主張すると、ブラウザが明示的なファイルヘッダチェックを行い、本当にIMOを修正する必要がなければ、かなり壊れてしまいます。現在、ファイル名/拡張子/ MIME /何かを率直に格納していない場合は、修正する必要があります。

PDFを表示するには、ではなくを使用する必要があります。a:はすべてのブラウザで機能しない可能性があり、b:は通話者にとってあまり便利ではない可能性があります。個人的にはダウンロードリンクを提供するだけです(ハンドラでは、ブラウザにダウンロードとして扱わせるためにcontent-dispositionを使用してください)。

+0

ブラウザの制限なしで表示するにはどうすればいいですか?私は画像ファイルまたはPDFファイルを私のWebページに表示する必要があります。Webページに表示するにはどうすればいいですか? –

+0

@AqEeL PDFの*画像*を表示したい場合は、おそらく[ここをクリック](http://stackoverflow.com/questions/1255322/create-pdf-thumbnail-with-c-sharp)をご覧ください。さもないと; '