2012-01-10 39 views
1

顯示保存對話框當我單擊<a>標籤時,如何強制保存文件下載對話框?在遠程服務器上有一個PDF文件,當用戶點擊該鏈接時,我們希望將該PDF文件下載到本地系統。如何使用HTML

感謝

+0

打開/保存?你想讓用戶打開什麼? – 2012-01-10 09:05:14

+0

請仔細閱讀我的文章。 '當用戶點擊該鏈接時,我們要將該pdf文件下載到本地系統。'我想這很清楚? 編輯:我會改變我的標題。抱歉 – Ozkan 2012-01-10 09:07:38

回答

3

通常,當你鏈接的文件的文件總是會在瀏覽器內顯示,因爲瀏覽器加載它,根據文件擴展名自動確定內容類型。所以,當你點擊一個像JPG圖像PDF等鏈接時,瀏覽器知道它是一個圖像/文件,並將顯示該文件。您當然可以始終使用瀏覽器快捷菜單,並使用「另存目標」選項將文件保存到磁盤。

如果您想在從服務器端單擊鏈接時自動執行此操作,則必須自行發送文件,並將自定義標頭添加到輸出中。執行此操作的方法是使用Response.TransmitFile()從ASP.NET應用程序顯式發送文件,然後添加Content Type和Content-Disposition標頭。

所以你neded使用頁眉下方liek:

header('Content-Disposition: attachment; filename="filename.pdf"'); 

這裏是一個exapmle可以幫助你:

http://www.west-wind.com/weblog/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET

3

改變你的頭值..

防爆 header('Content-Disposition: attachment; filename="downloaded.pdf"')

path = "path/to/file.pdf"; 
$filename = "file.pdf"; 
header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT'); 
header('Accept-Ranges: bytes'); // For download resume 
header('Content-Length: ' . filesize($path)); // File size 
header('Content-Encoding: none'); 
header('Content-Type: application/pdf'); // Change this mime type if the file is not PDF 
header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog 
-5

什麼他要找的是不是一個開放的保存對話框在下載東道主的東西。

他正在從客戶端的文件系統中打開一個文件。您必須使用輸入類型文件才能這樣做。但是你不會獲得很多操作JavaScript的權限。

而且沒有辦法通過標準html提示窗口的保存對話框。

我們需要ActiveX或Flash來做到這一點。