好吧,所以我想開始託管我自己的文件共享網站,我目前正在使用WAMP服務器具有Apache,PHP,MySQL等服務器屬性。我有我的根文件夾位於一個2TB硬盤驅動器,我想列出另一個硬盤驅動器中的文件夾/文件。但是當我使用dir函數時,它並沒有鏈接到它列出的實際文件。我希望允許用戶將硬盤中的文件下載到客戶端計算機上。任何想法如何解決這個問題,並鏈接到實際的文件?引用外部驅動器在PHP
回答
您無法直接鏈接到不在您網站上的文件。
你可以做的就是讓所有的鏈接指向一個下載腳本,它需要一個指向該文件的參數。該腳本可以使其在內存中工作。
下面是一個例子,我的網站在這裏找到:
http://www.finalwebsites.com/forums/topic/php-file-download
// place this code inside a php file and call it f.e. "download.php"
$path = $_SERVER['DOCUMENT_ROOT'] . "/path2file/"; // change the path to fit your websites document structure
$fullPath = $path . $_GET['download_file'];
if ($fd = fopen ($fullPath, "r"))
{
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
switch ($ext)
{
case "pdf":
header("Content-type: application/pdf"); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
break;
default:
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
break;
}
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd))
{
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd);
exit;
// example: place this kind of link into the document where the file download is offered:
// <a href="download.php?download_file=some_file.pdf">Download here</a>
我做了一個新的PHP頁面,並將其放置在我的根文件夾中,但是當我打開它時,它給了我3個錯誤,我使用了準確的代碼,給了我一些小小的爭執,但它仍然不會工作。我的根目錄是:F:/ wamp/www/nfs /。我試圖從位於字母P:/的另一個驅動器中引用或下載文件。這是說,我的錯誤是在12,14和42行。 –
這裏是我在測試你提供的代碼時得到的錯誤圖片: [img] http://bayimg.com/dAKNHAaDJ [img] –
你將不得不開始調試。第一個錯誤是參考「未定義索引:download_file」。這意味着頂部的get沒有名爲download_file的參數。代碼片段底部的鏈接顯示瞭如何構建鏈接,以便$ _GET數組擁有download_file的密鑰。 – evan
在linux中我將創建一個從外部硬盤驅動器的符號鏈接到您的Webroot文件夾,但在Windows下,它看起來像你需要創建聯結目錄。
有一個這樣的閱讀,它解釋瞭如何創建它。
http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/
你的目錄結構應該結束這樣看
webroot
|- php files
|- externalfiles (dir junction to ext hard drive)
|- sharedfile1
|- sharedfile2
- 1. MongoDB在外部驅動器
- 2. 枚舉外部驅動器
- 3. 外部驅動器與_www組
- 4. 使用驅動器標籤對多個外部驅動器進行Xcopy
- 5. 在外部服務器上安裝Azure驅動器
- 6. 如何阻止USB以阻止筆驅動器和外部硬盤驅動器
- 7. 用於在線業務的備份 - 更好的外部硬盤驅動器或磁帶驅動器
- 8. 爲mac用戶保存Android sdk的外部硬盤驅動器
- 9. 開發外部谷歌驅動器sdk應用程序
- 10. 如何使用e-sata外部端口訪問SATA驅動器
- 11. Chown不適用於外部驅動器中的文件?
- 12. 在bash中卸載我的外部硬盤驅動器
- 13. 在外部驅動器上編譯代碼
- 14. 在OSX上的rsyncing外部驅動器之前進行檢查
- 15. 如何在外部驅動器上安裝Xcode 6或7?
- 16. Robocopy -Directory/Files不顯示在外部驅動器上
- 17. 在XP和Windows 7上運行xampp外部硬盤驅動器
- 18. MAC +外部驅動器無法識別爲可移動存儲
- 19. PowerShell腳本自動格式化外部連接的驅動器
- 20. 如何確定驅動器是否是外置驅動器
- 21. 彈簧引導驅動器禁用CSRF
- 22. 通過外部RSS驅動Wordpress
- 23. 識別內部驅動器vs USB驅動器bash
- 24. 重新部署到外部硬盤驅動器後,MySQL無法啓動RPi
- 25. 在驅動器
- 26. Google驅動器 - 如何使用php
- 27. 試圖使用外部樣式表從谷歌驅動器在易趣列表
- 28. iPad - 來自外部驅動器的html文件輸入
- 29. R將臨時目錄設置爲外部驅動器
- 30. GIT克隆到外部驅動器進行備份
你能告訴一個代碼示例,它輸出什麼? –
您可以在您的webroot內創建一個連接點到該驅動器的目錄。 – hakre