我想隱藏下載文件夾的位置,以便當用戶下載文件時他看不到位置。我認爲這可以使用.htaccess文件來完成,但我該怎麼做?或者,這怎麼可以用PHP來完成?如何隱藏實際的下載文件夾位置
回答
這是我如何做到這一點在PHP中:
<?php
$fakeFileName= "fakeFileName.zip";
$realFileName = "realFileName.zip";
$file = "downloadFolder/".$realFileName;
$fp = fopen($file, 'rb');
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fakeFileName");
header("Content-Length: " . filesize($file));
fpassthru($fp);
?>
此外,如果你不希望任何人訪問該文件的位置,把一個名爲.htaccess
文件到您的下載文件夾中,只有內容:
deny from all
我改了一點代碼。首先當我說假文件名和真實文件名時,假文件名是下載器將文件下載到的名稱,其中真實文件名是服務器上下載文件夾中實際文件的名稱。
此外,我檢查以確保用戶已登錄並能夠下載該文件。如果他選擇下載文件,一個PHP文件是在一個新的標籤(從上面的下載代碼)調用,然後在文件的最後,我也行:
exit;
所以當他點擊下載鏈接,一個空白頁面迅速在新標籤中彈出,然後快速退出並開始下載。
編輯:下載鏈接看起來是這樣的:
<a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a>
哪裏id
是下載數據庫的id
,並在下載腳本從上面我發現與id
進入,然後得到它的真實文件名和假文件名。你可以在沒有數據庫的情況下這樣做。
也許你想看看Mod Rewrite,或者使用你的PHP腳本來訪問文件,只需要去file.php?f=someHash
,然後用八位字節流來強制用戶下載文件。
+1 - 這將是理想的解決方案。通過PHP腳本傳遞所有下載內容不僅意味着您可以將數據目錄移出公共根目錄,而且還可以將安全檢查置於頂層。理想情況下,不要按文件名引用文件,使用映射到文件的ID,以便可以隨意更改名稱而不會破壞現有鏈接。 – michael
您要做的是讓用戶定向到fake_url.php
,然後將該URL重寫爲其他文件 - real_url.php
。這有效地將real_url.php
呈現爲隱藏狀態,因爲用戶不知道您的.htaccess
文件中發生的重定向。
RewriteRule fake_url.php(.*)$ real_url.php?$1 [L,QSA]
在你real_url.php
,你可以通讀重定向傳遞的參數,然後使用類似的東西來readFile()
內real_url.php
從發送相應的文件返回給用戶,以便用戶將只能看到URL -
https://my-secret-site/download.php?file=file_to_download
而在你real_url.php
你就會知道被檢查$_GET['file']
參數要求的是什麼文件。
用戶正在下載的文件的實際位置已無關緊要。所有下載都通過fake_url.php
,只有該腳本需要知道下載文件夾的真實位置。
我認爲,主要部分是「寫入.htaccess」,可以通過簡單的fwrite來完成,但是如果你給用戶,在線閱讀pdf的選擇,這個解決方案將不起作用,因爲在這種情況下,socket需要打開更多的時間(以某種方式,如果你能做到這一點,那麼這可能會危害您的安全!),
<?php
session_start();
$fileLocation = getenv("DOCUMENT_ROOT") . "your_download _folder/.htaccess";
$file = fopen($fileLocation,"w");
$k="\.(md|htaccess)$";
$content = "IndexIgnore *
Order Deny,Allow
Deny from All
AddType application/octet-stream .pdf";
fwrite($file,$content);
fclose($file);
$p=getenv("DOCUMENT_ROOT") . "your_download _folder/".$_SESSION['x'](file_to_be_downloaded !);
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=".$_SESSION['x']);
readfile($p);
$fileLocation = getenv("DOCUMENT_ROOT") . "your_download _folder/.htaccess";
$file = fopen($fileLocation,"w");
$k="\.(md|htaccess)$";
$content = "IndexIgnore *
Order Allow,Deny
Deny from All
AddType application/octet-stream .pdf";
fwrite($file,$content);
fclose($file);
exit;
?>
結果:在接下來的窗口(這將在下一時刻被關閉),一文件下載選項將被觸發給用戶。
- 1. 如何隱藏在我心中實際的下載文件夾位置
- 2. 在iframe src中隱藏實際的本地文件夾位置
- 3. 隱藏下載文件位置。 - 重定向下載
- 4. 隱藏配置文件夾
- 5. 隱藏文件的實際鏈接
- 6. 如何將一個文件夾設置爲下載位置文件夾
- 7. 用戶下載文件時隱藏文件夾路徑
- 8. 聚光燈導入器:如何隱藏實際的文件名?
- 9. 如何下載/ gunzip文件並獲取實際文件的InputStream?
- 10. 如何隱藏實際路徑Carrierwave
- 11. 如何實際下載附件?
- 12. 如何隱藏腳本文件夾?
- 13. 如何在Sharepoint中隱藏文件夾
- 14. 如何使用java隱藏文件夾
- 15. QT QFileDialog如何隱藏隱藏/備份文件夾(「.folder」)
- 16. 如何隱藏除配置規範中提到的文件夾?
- 17. Express res.download()沒有實際下載文件
- 18. 隱藏admin文件夾
- 19. 隱藏文件夾.htaccess
- 20. Java FileSystemView隱藏文件夾
- 21. .htaccess - 隱藏文件夾
- 22. NSFileManager:隱藏文件夾?
- 23. applicationhost.config隱藏.vs文件夾
- 24. 創建隱藏文件夾
- 25. 隱藏文件夾C#
- 26. XCode4中的隱藏文件夾/文件
- 27. 如何通過Amazon CloudFront訪問文件時隱藏實際文件名?
- 28. 如何從文件夾下載文件?
- 29. 如何下載文件到我的下載文件夾android
- 30. xap文件下載位置
不,你不能。這是一個基本的東西,讓用戶做他想要下載的文件。 – yent
我想他是說如何隱藏下載腳本的URL – michael
@yent實際上我只是想隱藏文件存在的用戶的位置 –