我正在使用可搜索文档存储库页面的Intranet上工作。它使用一些PHP来生成目录中的文档列表并将它们放在一个表中。当我点击第二列中的链接时,它应该下载文档,但是会显示一个错误页面,其中包含短语“404 - 文件或目录未找到。您正在查找的资源可能已被删除,名称已更改或暂时不可用。”目录下载链接不工作“服务器错误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>";
?>
您确定当前目录内有一个名为'pdf_download.php'的页面? –
与生成文件列表的脚本位于同一目录中的是“pdf_download.php”脚本吗? – Barmar
@PeterM我在网上发现了这个代码,甚至没有注意到,直到现在!不幸的是,我从他们没有提到任何pdf_download.php文件中得到这段代码。我不确定他们是否可能遗漏了一些东西,或者它只是一个占位符。 –