2012-02-09 137 views
6

目的是在運行sql轉儲腳本(來自PHP)後下載傾銷的backup.sql文件。通常,轉儲的.sql文件在服務器上輸出(寫入)。然後,當我製作像<a href="backup.sql">Download File</a>那樣的文件的href鏈接時,該文件在點擊時在瀏覽器內部打開,而不是下載。如何創建可下載的鏈接到文本文件?

  • 我只想做一個簡單的HREF LINK(這樣的文本文件),其顯示了「另存爲...」簡單左側對話框中單擊

它是如何做到的?

回答

3

將以下行添加到您的.htaccess文件中。

<Files "backup.sql"> 
ForceType applicaton/octet-stream 
Header set Content-Disposition attachment 
</Files> 
+0

這太酷了。謝謝你的訣竅;)它對我來說很好,但如果可能的話,我可以用'Save as..'對話框來保存它嗎? – 2012-02-09 10:18:58

+0

您應該使用這些規則得到一個「另存爲...」對話框。 (如果你得到一個內部服務器錯誤,你可能沒有加載頭文件模塊)。 – 2012-02-09 11:16:43

+0

沒有羅布。該文件現在只需單擊進入默認瀏覽器下載文件夾即可保存。但是,廣泛地我只是想讓瀏覽器用對話框來詢問保存(就像我們用右鍵單擊保存鏈接一樣 - >另存爲)。但是,只是要求知識。這並不是真的需要我知道。 – 2012-02-10 10:06:28

3

另一種選擇是用一個PHP文件如爲它服務download.php

有這樣的的download.php

$path = "backup.sql" 
    header("Content-Type: application/octet-stream"); // 

    header("Content-Length: " . filesize($path));  

    header('Content-Disposition: attachment; filename='.$path); 

    readfile($path); 

然後

<a href="download.php">Download File</a> 
+0

如此偉大的劇本,vikki。感謝它;)它對我來說很好,但如果可能的話,我可以用'Save as..'對話框來保存它嗎? – 2012-02-09 10:20:11

17

或者你可以只使用新的HTML5屬性download在您的html的錨定標記中。

的代碼看起來像

<a download href="path/to/the/download/file"> Clicking on this link will force download the file</a> 

它適用於Firefox和Chrome最新版本。我應該提到我沒有在IE中檢查它嗎? :P

+2

在我剛剛驗證的IE6上工作...:P – 2013-08-21 01:21:25

+0

在與上述條件相同的情況下:用戶的瀏覽器配置仍可能提示用戶在查看和保存之間進行選擇。當html KNOWS的作者是文件是二進制的,如果查看會導致驚愕,是不是有一種方法讓HTML作者只允許選擇「保存」? OP的問題似乎還沒有得到答案。是否有一些文件後綴(例如.exe)的行爲不同? – bootchk 2013-08-30 11:37:33

+0

非常簡單。 – 2016-02-04 06:27:00

相關問題