我有圖像列表,我想要一個「下載」鏈接以及每個圖像,以便用戶可以下載圖像。如何強制一個文件在PHP下載
所以有人可以指導我如何提供下載鏈接的任何文件在PHP?
編輯
我想顯示在點擊下載鏈接,我不想。如果要強制導航到圖像上的瀏覽器
我有圖像列表,我想要一個「下載」鏈接以及每個圖像,以便用戶可以下載圖像。如何強制一個文件在PHP下載
所以有人可以指導我如何提供下載鏈接的任何文件在PHP?
編輯
我想顯示在點擊下載鏈接,我不想。如果要強制導航到圖像上的瀏覽器
要顯示的下載面板下載後,您可以使用像下面這樣:
<?php
// Fetch the file info.
$filePath = '/path/to/file/on/disk.jpg';
if(file_exists($filePath)) {
$fileName = basename($filePath);
$fileSize = filesize($filePath);
// Output headers.
header("Cache-Control: private");
header("Content-Type: application/stream");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath);
exit();
}
else {
die('The provided file path is not valid.');
}
?>
如果您只是鏈接到這個腳本使用正常的鏈接文件將被下載。
順便提一下,上面的代碼片段需要在頁面的開頭執行(在任何頭文件或HTML輸出發生之前)。還要小心如果您決定創建一個基於此功能的函數來下載任意文件 - 你需要確保你防止目錄遍歷(realpath很方便),只允許從定義區域內下載,等等,如果你接受來自$ _GET或$ _POST的輸入。
確切地說我想要這個,但是我怎樣才能連接它像「下載」點擊哪個腳本應該被執行 – 2010-08-13 11:46:50
Opps - 好點。我會更新我的答案。 – 2010-08-13 11:50:48
+1嘿,夥計,它的工作,但下載的文件發現損壞,我無法打開圖像。 – 2010-08-13 11:55:26
的解決方案更容易,你認爲;)使用簡單:
header('Content-Disposition: attachment');
而這一切。 Facebook例如也是這樣。
您可以在.htaccess中執行此操作,並指定不同的文件擴展名。這樣做比編寫應用程序更容易。
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
順便說一句,您可能需要清除瀏覽器緩存才能正常工作。 <a>
標籤的
而不是添加相同的答案,重複您可能會考慮標記的問題,您發現的問題同樣重複。 – bummi 2013-08-05 14:46:57
它們不重複。他們都是不同的問題,但有類似的可能解決方案。每個問題的個別答案可能與人更相關,因此將其標記爲重複可能會破壞有用的信息。這只是我給出的答案可能對一些搜索這些問題的人有用。當我自己試圖找到答案時,我回答的所有這些問題都出現在Google搜索中。我花了很長時間才找到解決方案,而且我想回答每一個問題,以便任何搜索者都知道這個解決方案。 – 2013-08-06 04:44:20
在HTML5 download
屬性可以用來:如果href屬性被設置僅用於
echo '<a href="path/to/file" download>Download</a>';
該屬性。
允許的值沒有限制,瀏覽器將自動檢測到正確的文件擴展名並將其添加到文件 (.img,.pdf,.txt,.html等)。
瞭解更多here。
'download'? – RaYell 2010-08-13 11:33:49
@RaYell他說*在PHP *中。所以它實際上是'回聲'download';':P – 2010-08-13 11:36:37