我正在一个客户的网站上工作,我没有编写代码。我有麻烦使文件可下载。
这是一个用户可以下载课程文件的子域名。 网站文件包含在文件夹" courses" (在根级别)。
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/>';
}
那么这段代码不起作用:当用户点击一个文件时,我得到了一个&#34; 404 Not Found&#34;消息,找不到该文件。怎么会这样?
为什么显示文件完全正常,但同时单击文件时出现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错误。怎么会这样?
答案 0 :(得分:0)
你必须查看页面的webroot所在的位置,生成列表的php文件所在的位置以及文件所在的位置。
您生成的链接是相对于生成链接的php文件,该链接可能与浏览器中的URL不对应。我尝试相对于webroot创建此链接(请注意前导斜杠!)
echo '<a class="imtext" href="/courses/downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>';
如果猜到的解决方案不起作用,请提供生成此链接的页面的当前网址和一个生成的链接,以便我们为您提供更好的帮助。