我在一个客户的网站上工作,我没有写代码。我在下载文件时遇到了麻烦。
它是关于用户可以下载课程文件的子域。网站文件包含在"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 Not Found错误。这怎么可能呢?
你必须看看你的网页在哪里,php文件生成列表的位置和文件在哪里。
生成的链接是相对于生成该链接的php文件的,它可能与浏览器中的URL不对应。我会尝试使这个链接相对于web浏览器(注意前面的斜杠!)
echo '<a class="imtext" href="/courses/downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>';
如果猜测的解决方案不工作,请提供当前的网页URL,其中这个链接产生和一个产生的链接,所以我们可以帮助你更好。