這個問題說明了一切..我如何讓用戶從我的網站下載文件,並且而不是讓他們看看該文件來自哪個鏈接?我知道可能需要類似download.php這將作爲網關,但過去的階段,我不知道接下來的腳本...如果它困擾你編寫整個代碼,一些函數我應該需要使用的名字將非常方便!一個PHP腳本讓用戶從我的網站上下載一個文件,而不會泄露我網站上的實際文件鏈接?
7
A
回答
10
找到一種識別要下載的文件的方法(例如,與數據庫中某行的ID匹配的GET變量,或者沿着這些行的東西)。確保它是有效的,因爲你不希望你的用戶能夠從你的網站下載任何東西。然後,使用header
和Content-Disposition
來告訴瀏覽器文件應該被下載,並且readfile
來輸出它。
例如:
<?php
$id = intval($_GET['id']);
$query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id);
if (($row = mysql_fetch_row($query)) !== false)
{
header('Content-Disposition: attachment; filename=' . basename($row[0]));
readfile($row[0]);
}
exit;
?>
1
可以使用header()
功能是documented here
我建議向下滾動,並期待在第1例。它似乎正在做你想要的東西。
+0
只是Shedo Chung-Hee Surasi的一個註釋 - 第二個例子還告訴你如何指定一個不同於原始文件名的文件名(正如你在你的問題中提到的那樣)。 – jerebear 2010-07-15 04:27:53
0
readfile應該做你想要什麼。將實際文件放在Web服務器根目錄之外,並在傳回文件之前需要一些憑據。
4
你不能讓別人從URL下載文件而不讓他們知道URL。在HTTP規範下是不可能的。下載的任何東西都有一個URL。
但是,您可以擁有隻能使用一次的下載網址,或者需要通過POST方法傳遞一些特定信息。您在GET或POST變量中檢查一個標記,並在該標記使用一次後使其無效。
相關問題
- 1. 從網站上的鏈接下載網站上的jar文件
- 2. 我有一個網站的鏈接如何從網站下載所有文件?
- 3. PHP腳本下載一個網站及其文件
- 4. 我可以通過下載鏈接從網站上下載文件嗎? Visual Basic
- 5. 如何使用另一個網站上傳一個網站上的文件
- 6. 添加一個php文件讓我的網站變得可惡?
- 7. 我在我的網站上有一個.swf文件
- 8. 我想讓我的網站有多個上下文菜單
- 9. 如何讓我的用戶從我的jDeveloper 10g網站下載文件?
- 10. 我網站上的另一個網址鏈接
- 11. 如何保護我的網站用戶文件從網站下載
- 12. 如何讓我的網站用戶上傳媒體文件?
- 13. DotNetZip下載在一個網站上,而不是另一個
- 14. 如何從一個網站(蟒蛇)下載一個zip文件
- 15. 可下載文件的網站鏈接似乎不會更新
- 16. 從網站下載文件
- 17. 從網站下載文件
- 18. 動態鏈接到一個PDF文件,在其他網站上
- 19. 從網站下載某個文件
- 20. 從多個網站下載文件。
- 21. 從我的網站打開一個文件夾,以上傳文件
- 22. 如何從一個網站上的一個zip文件沒有下載本地zip文件
- 23. 如何將其他網站文件下載到我的網站?
- 24. 鏈接到我的網站上的PGP/ASC文件
- 25. 從網站下載文件PHP
- 26. 在網站上顯示一個巨大的文本文件
- 27. 我如何從Python網站抓取網站上的pdf鏈接
- 28. 我如何從網上下載一個文件(ZIP)在vb.net
- 29. php寫一個文件從一個網站不工作
- 30. 網站刮板不會刮我的一個鏈接
我記得使用類似的技術在csv文件中導出電子郵件地址。 Safari的mac爲內容類型標頭忽略。 – Keyo 2010-07-15 05:15:59
這個腳本是否支持htaccess?我有一個htaccess規則來拒絕在方法被繞過的情況下訪問真正的URL。 「所有人都拒絕」是否也會影響到這個腳本? – 2016-12-28 19:36:38
@CodigosTutoriales,.htaccess文件中的規則只會影響來自客戶端的Web請求。他們不會阻止您的服務器代碼讀取服務器上的文件。 – zneak 2016-12-28 19:39:23