2012-03-14 40 views
2

我有一個包含PDF文檔的BLOB字段。我想檢索該BLOB並在新的選項卡或窗口中顯示PDF。我已經在檢索BLOB,但無法顯示它。我使用C#和ASP.net 2010年至今,我的代碼是這樣的:從ASP.net的瀏覽器中顯示來自Oracle數據庫的PDF

byte[] blobBuffer = getPDFBlob(selectedOfferId); 

if (blobBuffer != null) 
{ 
    Response.ContentType = "application/pdf"; 
    //Response.AddHeader("Content-Type", "application/pdf"); 
    //Response.AddHeader("Content-Disposition", "inline"); 
    Response.BinaryWrite(blobBuffer); 
    Response.End(); 
} 

getPDFBlob是進入數據庫和檢索BLOB字段的內容的程序。我錯過了什麼?

+1

會發生什麼?你有錯誤嗎?爲什麼你無法顯示它? – 2012-03-14 18:00:40

+0

代碼執行,但沒有任何反應......沒有錯誤,沒有任何東西。 – 2012-03-14 18:02:48

+1

你沒有打開PDF?瀏覽器中會發生什麼? – 2012-03-14 18:03:30

回答

0

你應該設置ContentType

也可以嘗試調用BinaryWrite之前調用Response.AddHeader("content-disposition", "attachment; filename=test.pdf");之前調用Response.Clear();

更新 - 按評論:

取決於你想要達到的目標(下載與在瀏覽器中顯示),則還可以嘗試調用BinaryWrite之前調用Response.AddHeader("content-disposition", "inline; filename=test.pdf");

更新2:

你應該檢查的另一點是blobBuffer內容 - 它寫到本地文件,看它是否實際上是一個有效的PDF ...

更新3:

在致電BinaryWrite並致電End之前,嘗試撥打Response.Flush();

+0

附件會強制下載,我想他想在窗口中顯示。 – c0deNinja 2012-03-14 18:06:31

+0

filename = test.pdf ??從數據庫讀取文件時,我的文件沒有名稱。我想打開新標籤頁或新窗口中的內容,並根據需要選擇打印或保存,但主要功能是顯示。 – 2012-03-14 18:55:02

+0

@ D.Bermudez我知道BLOB沒有文件名,但大多數瀏覽器都希望有一些文件名...請嘗試上面的代碼... – Yahia 2012-03-14 18:56:22

0

嘗試添加:

Response.AddHeader("content-disposition", "inline;filename=mypdf.pdf"); 
+0

文件名= mypdf.pdf ??從數據庫讀取文件時,我的文件沒有名稱。我想打開新標籤頁或新窗口中的內容,並根據需要選擇打印或保存,但主要功能是顯示。 – 2012-03-14 18:55:29

+0

你可以放任何你喜歡的名字! – c0deNinja 2012-03-14 19:10:30

+0

沒有,但仍然無效......不知道發生了什麼事 – 2012-03-14 21:28:08

相關問題