我正在使用可搜索的文档存储库页面在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>";
?>
答案 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";
它无法找到文件,因为下载链接指向根目录而不是文档目录。