2011-11-14 104 views
0

我有一個gridview,我已經提供了一個選項供用戶下載pdf文件。當他們點擊pdf圖標時,有時會在新標籤頁中打開pdf文件,有時會開始下載。我怎樣才能讓它始終下載?打開對話框下載pdf

+0

這取決於;您需要向我們展示一些關於如何定義或檢索網格中的PDF的代碼,然後才能提供答案。 –

+0

點擊pdf圖標我使用javascript打開文件:window.open('src'); return false; – user728630

回答

3

您需要添加一個按鈕(圖像按鈕,linknbutton或按鈕),處理GridView控件的RowCommand事件。在RowCommand處理程序中,您可以編寫代碼來下載文件。

您可以使用Response對象的方法。

string filepath=MapPath("~/files/file.pdf"); 
byte []bytes=System.IO.File.ReadAllBytes(filepath); 

Response.Clear(); 
Response.ClearHeaders(); 
Response.AddHeader("Content-Type", "application/octet-stream"); 
Response.AddHeader("Content-Length", bytes.Length.ToString()); 
Response.AddHeader("Content-Disposition","attachment; filename=file.pdf"); 
Response.BinaryWrite(bytes); 
Response.Flush(); 
Response.End(); 
2

爲了始終強制下載,您需要添加AVD顯示的Content-Disposition標頭;然而,我覺得這完全沒有必要;我認爲只需在新窗口中打開PDF鏈接即可。換句話說,定義了target="_blank"。例如:

<a href="file.pdf" target="_blank">invoice</a> 

然後,達到他是否要在本地保存文件,或只是看到它在屏幕上的用戶。我認爲重要的是,這不會影響用戶正在查看的當前頁面。

+0

這解決了我的問題,謝謝! – Wint