目录下载链接无法正常工作“服务器错误404 - 找不到文件或目录。”

时间:2016-11-04 18:43:06

标签: php html

我正在使用可搜索的文档存储库页面在Intranet上工作。它使用一些php生成目录中的文档列表并将它们放在表中。当我单击第二列中的链接时,它应该下载文档,而是显示一个错误页面,其中包含短语“404 - 未找到文件或目录。您正在查找的资源可能已被删除,其名称已更改,或者是暂时不可用。“

我使用的是Windows Server 2012 r2和ISS 7.5。

我仔细检查过,文件肯定在正确的目录中。

这是网页的代码。

<?php
function getFileList($dir)
{
  $retVal = array();
if (substr($dir, -1) != "/") $dir .= "/";

    // open pointer to directory and read list of files
    $d = @dir($dir) or die("getFileList: Failed opening directory $dir for     reading");

        while(false !== ($entry = $d->read())) {
        // skip hidden files
        if($entry[0] == ".") continue;

            if(is_dir("$dir$entry")) {
                $filename = "$dir$entry";
                $retval[] = array(
                "title" => "$filename/",
                "path" => filetype("$filename"),
                "size" => 0,
                "lastmod" => filemtime("$filename"));
            } elseif(is_readable("$dir$entry")) { 
                $filename = "$dir$entry";
                $retval[] = array(
                "title" => "$entry",
                "path" => "$filename",
                "size" => filesize("$filename"),
                "lastmod" => filemtime("$filename"));

            }
        }

    $d->close();

return $retval;

}
?>

<?php
    $dirlist = getFileList("docs");
    print "<table id='myTable' border=\"1\">\n";
    print "<thead>\n";
    print "<tr class='header'><th>File Name</th><th>Link (click to download)</th><th>Size</th><th>Last Modified</th></tr>\n";
    print "</thead>\n";
    print "<tbody>\n";
        foreach($dirlist as $file) {
            print "<tr>\n";
            print "<td>{$file['title']}</td>\n";
            $path_parts = pathinfo($file['path']);
            $path_noext = $path_parts['dirname'] . "/" . $path_parts['filename'];
            $path_noext = str_replace(' ', '%20', $path_noext);
            print "<td><a href=pdf_download.php?filename={$path_noext}>{$file['title']}</a></td>\n";
            print "<td>{$file['size']}</td>\n";
            $timestamp = date('F d Y h:i A', $file['lastmod']);
            print "<td>{$timestamp}</td>\n";
            print "</tr>\n";
        }   
  print "</tbody>";
  print "</table>";
 ?>

2 个答案:

答案 0 :(得分:0)

尝试更改

print "<td><a href=pdf_download.php?filename={$path_noext}>{$file['title']}</a></td>\n";

print "<td><a href=\"pdf_download.php?filename={$path_noext}\">{$file['title']}</a></td>\n";

您没有引用该链接的实际href部分。

答案 1 :(得分:0)

我修好了。

更改此行:

print "<td><a href=pdf_download.php?filename={$path_noext}>{$file['title']}</a></td>\n";

对此:

print "<td><a href=docs/{$file['title']}>{$file['title']}</a></td>\n";

它无法找到文件,因为下载链接指向根目录而不是文档目录。