2015-05-14 77 views
0

我正在爲其中沒有編寫代碼的客戶端的網站工作。我有麻煩使文件可下載。PHP:文件無法下載(「404 Not Found」消息)

它是關於用戶可以下載課程文件的子域。 網站文件包含在「課程」文件夾中(在根級別上)。

  • 顯示可下載課程文件的文件包含在 「courses/displayfiles.php」中。
  • 可下載文件包含在「courses/downloadfolder」文件夾中。在這個文件夾裏面,每個用戶都有他自己的 文件夾,它的名字有用戶標識。

displayfiles.php:下面的代碼成功地顯示,可以通過登錄的用戶下載的所有文件:

$path = "downloadfolder/" . $_SESSION['userId'] . "/"; 
    $files = array(); 
    $output = @opendir($path) or die("$path could not be found"); 

    while ($file = readdir($output)) { 
    if (($file != "..") and ($file != ".")) { 
     array_push($files, $file); 
    } 
    } 
    closedir($output); 
    sort($files); 

    foreach ($files as $file) { 
    echo '<a class="imtext" href="downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>'; 
    } 

那麼,是什麼不是此代碼的工作:當用戶點擊在一個文件上,我收到一個「404 Not Found」的消息,說沒有找到該文件。怎麼會這樣?

爲什麼顯示文件完全正常工作,但同時單擊文件時出現404錯誤?文件路徑($path)必須正確,否則?爲了解決這個問題,我還需要進行哪些調查?

* UPDATE *

我決定修改文件環路跟隨(改變HREF):

foreach ($files as $file) { 
      echo '<a class="imtext" href="http://'.$_SERVER['HTTP_HOST']. '/downloadfolder/' . $_SESSION['courseId'] . '/' . $file . '/">' . $file . '</a><br/>'; 
     } 

不過,當我點擊一個文件,我得到一個404未找到錯誤。怎麼會這樣?

+0

您最好的方法是檢查生成的鏈接。這可能是一個錯誤的地方。檢查是否存在所有相應的目錄。 –

+0

我將href改爲:'href =「http://'.$_SERVER ['HTTP_HOST']。'/ downloadfolder /'。$ _SESSION ['courseId']。'/'。$ file。'/ 「>這絕對是文件所在的地方。我仍然收到404錯誤。怎麼會這樣? – Max

+0

如果你確定,一切正常,文件真的存在,那麼請看看這個:http://stackoverflow.com/questions/24654907/why-server-says-404-file-or-directory-not-found -while文件存在。也許鏈接會有所幫助。 –

回答

0

你必須看看你的頁面的webroot在哪裏,生成列表的php文件所在的位置以及文件所在的位置。

您生成的鏈接是相對於生成鏈接的php文件而言的,該鏈接可能不對應於瀏覽器中的URL。我想嘗試這相對於Web根目錄的鏈接使(注意斜線!)

echo '<a class="imtext" href="/courses/downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>'; 

如果猜的解決方案不起作用,請提供這個地方的聯繫產生和生成一個網頁的當前URL鏈接,所以我們可以幫助你更好。

+0

感謝您的建議,但這沒有奏效。我編輯了我的文章(請參閱上文)。我在href中添加了文檔根目錄,但仍然收到404錯誤。怎麼會這樣? – Max

相關問題