【发布时间】:2015-05-14 08:53:58
【问题描述】:
我正在开发一个我没有为其编写代码的客户的网站。我无法下载文件。
这是关于用户可以下载课程文件的子域。 网站文件包含在文件夹“课程”中(在根级别)。
- 用于显示可下载课程文件的文件包含在 “课程/显示文件.php”。
- 可下载的文件包含在“课程/下载文件夹”的文件夹中。在这个文件夹中,每个用户都有自己的 files 文件夹,其名称具有用户 ID。
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) 是否必须正确?为了解决这个问题,我需要进行哪些进一步的调查?
* 更新 *
我决定修改文件循环如下(更改href):
foreach ($files as $file) {
echo '<a class="imtext" href="http://'.$_SERVER['HTTP_HOST']. '/downloadfolder/' . $_SESSION['courseId'] . '/' . $file . '/">' . $file . '</a><br/>';
}
不过,当我单击文件时,我会收到 404 Not Found 错误。这怎么可能?
【问题讨论】:
-
对您来说最好的方法是检查生成的链接。它可能是一个错误的地方。检查所有对应的目录是否存在。
-
我把href改成如下:
href="http://'.$_SERVER['HTTP_HOST']. '/downloadfolder/' . $_SESSION['courseId'] . '/' . $file . '/">这绝对是文件所在的地方。我仍然收到 404 错误。这怎么可能? -
如果您确定一切正常并且文件确实存在,那么请看一下:stackoverflow.com/questions/24654907/…。也许这个链接会有帮助。