2016-11-04 89 views
0

我正在使用可搜索文档存储库页面的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>"; 
?> 
+0

您确定当前目录内有一个名为'pdf_download.php'的页面? –

+0

与生成文件列表的脚本位于同一目录中的是“pdf_download.php”脚本吗? – Barmar

+0

@PeterM我在网上发现了这个代码,甚至没有注意到,直到现在!不幸的是,我从他们没有提到任何pdf_download.php文件中得到这段代码。我不确定他们是否可能遗漏了一些东西,或者它只是一个占位符。 –

回答

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"; 

它无法找到文件,因为下载链接指出到根目录没有的文件目录。

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部分。

+0

这'仍然给我一个404错误 –

+0

由于文件名中没有空格,为什么这会有帮助? – Barmar

+1

但是,引用HTML属性总是一个好主意。 – Barmar

相关问题