我正在爲其中沒有編寫代碼的客戶端的網站工作。我有麻煩使文件可下載。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未找到錯誤。怎麼會這樣?
您最好的方法是檢查生成的鏈接。這可能是一個錯誤的地方。檢查是否存在所有相應的目錄。 –
我將href改爲:'href =「http://'.$_SERVER ['HTTP_HOST']。'/ downloadfolder /'。$ _SESSION ['courseId']。'/'。$ file。'/ 「>這絕對是文件所在的地方。我仍然收到404錯誤。怎麼會這樣? – Max
如果你確定,一切正常,文件真的存在,那麼請看看這個:http://stackoverflow.com/questions/24654907/why-server-says-404-file-or-directory-not-found -while文件存在。也許鏈接會有所幫助。 –