2012-01-05 5 views
0

ブラウザでリンクをクリックするとPDFを開くようにしようとしています。実際にはDBからBLOBです。しかし、私はエラーを取得しています。ファイルは、「PDF-」asp.netエラー:ファイルが 'pdf-' asp.netで始まらない

これは私が使用していたコードであると始まらない、

 if (dt.Rows.Count > 0) 

     { 

      string strExtenstion = dt.Rows[0]["DGN0101FILE_EXTENSION"].ToString(); 

      byte[] bytFile = (byte[])dt.Rows[0]["DGN0101FILE"]; 

      string fileName = dt.Rows[0]["DGN0101FILE_NAME"].ToString(); 

      Response.Clear(); 

      Response.ClearContent(); 

      Response.ClearHeaders(); 

      Response.Buffer = true; 

      if (strExtenstion == ".doc" || strExtenstion == ".docx") 
      { 
       Response.ContentType = "application/vnd.ms-word"; 
      } 
      else if (strExtenstion == ".xls" || strExtenstion == ".xlsx") 
      { 
       Response.ContentType = "application/vnd.ms-excel"; 
      } 
      else if (strExtenstion == ".pdf") 
      { 
       Response.ContentType = "application/pdf"; 
      } 
      Response.AddHeader("Content-Length", bytFile.Length.ToString()); 
      Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); 
      Response.BinaryWrite(bytFile); 
      Response.Flush(); 
      Response.End(); 
      Response.Clear(); 
     } 
+1

どこがエラーになりますか?コード内に(もしそうなら、どの行に)?または、コードの実行が終了した後、クライアントのPDFリーダーで? – David

+0

@David、コードを実行した後にこのエラーが発生する実際にPDFを開くか保存するダイアログボックスが表示されます。私が開いたときに私にエラーが表示されます:ファイルは 'pdf-' asp.netで始まらない – Anuya

+0

それはPDFファイルではないようです。コードが終了し、データがバイトごとにクライアントに転送されると、それは設計どおりに動作します。これまでの情報では、問題のバイトストリームが有効なPDFファイルではない可能性が高いです。 (つまり、PDFリーダーが有効なPDFファイルを識別するために使用するファイルヘッダーは含まれていません)。さまざまなアプリケーションで開いたり、メモ帳などで調べたりして有用なヘッダー情報があるかどうかを調べる価値があります。 – David

答えて

0

有効なPDFファイルが%PDF-1.5または類似で始まります。私の推測では、あなたのデータが適切に格納されていないか、または取り出されていないということです。

  • 元のファイルをAcrobat/Acrobat Readerで表示して、実際にPDFであることを確認してください。
  • 元のファイルをテキストエディタで表示し、視覚的に検査します。
  • データベーステーブルを調べて、行にバイナリデータがあることを確認します。
  • データベースから抽出されているバイト配列の長さを確認します。
関連する問題