首页 > 解决方案 > 文件目录和下载文件 URL 错误

问题描述

我正在使用下面的代码来读取我保存在服务器上的文件夹中的文件。

<?php
    if ($handle1 = opendir('../files/policies/fire')) {
        while (false !== ($file1 = readdir($handle1))) {
            if ($file1 != "." && $file1 != "..") {
                $thelist1 .= '<li><a href="'.$file1.'" target="_blank">'.$file1.'</a></li>';
            }
        }
        closedir($handle1);
    }
?>
<h3>Fire Fighting Files:</h3>
<ul><?php echo $thelist1; ?></ul></h6>

代码按应有的方式读取目录中的文件。我遇到的问题是,一旦我单击它搜索的链接或尝试打开根目录中的文件

它不使用子目录打开文件,而是使用根目录。结构如下

/File
  /policies
    /FA

当我单击链接时,它会尝试查找如下文件

/files/OHS_EHSR-020%20Employee%20Health%20and%20Safety%20Rules.pdf

并且文件保存为

/files/policies/FA/OHS_EHSR-020%20Employee%20Health%20and%20Safety%20Rules.pdf

任何建议都会有所帮助。请注意我使用的代码也是从这个站点获取的

添加两个块的完整代码这就是为什么我不能在我的代码中将目录修复为静态的原因:

<div class="col-xl-5 col-md-5 col-12">
            <div class="box box-body">
              <h6 class="text-uppercase">
                  <?php
                  if ($handle = opendir('../files/policies/FA')) {
                      while (false !== ($file = readdir($handle))) {
                          if ($file != "." && $file != "..") {
                              $thelist .= '<li><a href="'.$file.'" target="_blank">'.$file.'</a></li>';
                          }
                      }
                      closedir($handle);
                  }
                  ?>
                  <h3>First Aid Files:</h3>
                  <ul><?php echo $thelist; ?></ul></h6>
             </div>
        </div>
        <!-- /.col -->
          <div class="col-xl-5 col-md-5 col-12">
              <div class="box box-body">
                  <h6 class="text-uppercase">
                      <?php
                      if ($handle1 = opendir('../files/policies/fire')) {
                          while (false !== ($file1 = readdir($handle1))) {
                              if ($file1 != "." && $file1 != "..") {
                                  $thelist1 .= '<li><a href="'.$file1.'" target="_blank">'.$file1.'</a></li>';
                              }
                          }
                          closedir($handle1);
                      }
                      ?>
                      <h3>Fire Fighting Files:</h3>
                      <ul><?php echo $thelist1; ?></ul></h6>
              </div>
          </div>

标签: php

解决方案


readdir返回相对路径不是绝对的,因此您需要添加/files/policies$file变量并在链接中使用它

更新:

$dir = '/files/policies/fire';

if ($handle1 = opendir('..' . $dir)) {
  while (FALSE !== ($file1 = readdir($handle1))) {
    if ($file1 != "." && $file1 != "..") {
      $filepath = $dir . DIRECTORY_SEPARATOR . $file1;
      $thelist1 .= '<li><a href="' . $filepath . '" target="_blank">' . $file1 . '</a></li>';
    }
  }
  closedir($handle1);
}

这应该适合你


推荐阅读