2012-01-05 96 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 2012-01-05 01:44:29

+0

@David,代碼執行後出現此錯誤。它實際上向我展示了一個打開或保存PDF的對話框。當我打開它給我的錯誤:文件不以'pdf-'開頭asp.net – Anuya 2012-01-05 01:48:06

+0

然後它聽起來像它不是一個PDF文件。如果代碼完成並且數據以字節爲單位傳輸到客戶端,那麼它按照設計工作。鑑於目前的信息,所討論的字節流很可能不是有效的PDF文件。 (也就是說,它不包含PDF閱讀器用來識別有效PDF文件的文件頭。)值得嘗試使用不同的應用程序打開它,或使用記事本等方式檢查它,以查看是否有有用的標題信息。 – David 2012-01-05 01:50:01

回答

0

的有效PDF文件,%PDF-1.5或類似的開始。我的猜測是你的數據沒有正確存儲或檢索。

  • 在Acrobat/Acrobat Reader中查看原始文件以確保它實際上是PDF。
  • 在文本編輯器中查看原始文件並進行目視檢查。
  • 檢查數據庫表以確保行中有二進制數據。
  • 檢查從數據庫中提取的字節數組的長度。