PHP:无法下载文件(" 404 Not Found" message)

时间:2015-05-14 08:53:59

标签: php file fopen

我正在一个客户的网站上工作,我没有编写代码。我有麻烦使文件可下载。

这是一个用户可以下载课程文件的子域名。 网站文件包含在文件夹" courses" (在根级别)。

  • 用于显示可下载课程文件的文件包含在 "课程/ displayfiles.php&#34 ;.
  • 可下载文件包含在" courses / downloadfolder"中的文件夹中。在这个文件夹中,每个用户都有自己的 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/>';
  }

那么这段代码不起作用:当用户点击一个文件时,我得到了一个&#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错误。怎么会这样?

1 个答案:

答案 0 :(得分:0)

你必须查看页面的webroot所在的位置,生成列表的php文件所在的位置以及文件所在的位置。

您生成的链接是相对于生成链接的php文件,该链接可能与浏览器中的URL不对应。我尝试相对于webroot创建此链接(请注意前导斜杠!)

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

如果猜到的解决方案不起作用,请提供生成此链接的页面的当前网址和一个生成的链接,以便我们为您提供更好的帮助。