2011-10-22 46 views
0

好吧,所以我想開始託管我自己的文件共享網站,我目前正在使用WAMP服務器具有Apache,PHP,MySQL等服務器屬性。我有我的根文件夾位於一個2TB硬盤驅動器,我想列出另一個硬盤驅動器中的文件夾/文件。但是當我使用dir函數時,它並沒有鏈接到它列出的實際文件。我希望允許用戶將硬盤中的文件下載到客戶端計算機上。任何想法如何解決這個問題,並鏈接到實際的文件?引用外部驅動器在PHP

+0

你能告訴一個代碼示例,它輸出什麼? –

+1

您可以在您的webroot內創建一個連接點到該驅動器的目錄。 – hakre

回答

0

您無法直接鏈接到不在您網站上的文件。

你可以做的就是讓所有的鏈接指向一個下載腳本,它需要一個指向該文件的參數。該腳本可以使其在內存中工作。

下面是一個例子,我的網站在這裏找到:
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> 
+0

我做了一個新的PHP頁面,並將其放置在我的根文件夾中,但是當我打開它時,它給了我3個錯誤,我使用了準確的代碼,給了我一些小小的爭執,但它仍然不會工作。我的根目錄是:F:/ wamp/www/nfs /。我試圖從位於字母P:/的另一個驅動器中引用或下載文件。這是說,我的錯誤是在12,14和42行。 –

+0

這裏是我在測試你提供的代碼時得到的錯誤圖片: [img] http://bayimg.com/dAKNHAaDJ [img] –

+0

你將不得不開始調試。第一個錯誤是參考「未定義索引:download_file」。這意味着頂部的get沒有名爲download_file的參數。代碼片段底部的鏈接顯示瞭如何構建鏈接,以便$ _GET數組擁有download_file的密鑰。 – evan

0

在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 
相關問題