【问题标题】:check if files exists and provides a link to it php检查文件是否存在并提供指向它的链接 php
【发布时间】:2017-05-16 07:21:41
【问题描述】:

我想检查一个目录是否包含特定文件(任何类型、图像、pdf 等)。如果它包含该文件,我想提供该文件的下载链接,否则打印"not exist"。不幸的是,我的代码一直在打印not exist,即使该文件存在于目录中。这是我的代码:

                <td>  <?php

if (file_exists('plans/'.$RID)) {
  echo"<a href='plans/$RID'>Plan</a>";
} else {
    echo "not exists";
}
?>  </td>

这是另一个我也试过但不起作用的代码:

<td>  <?php
    $plan= 'plans/'.$RID;
    if (file_exists($plan)) {
      echo"<a href='plans/$RID'>Plan</a>";
    } else {
        echo "not exists";
    }
    ?>  </td>

【问题讨论】:

  • 将绝对路径传递给file_exists
  • 绝对路径是什么意思
  • 类似PROJECT_ROOT . "/plans/$RID" (/path/to/plans/1234)
  • 可能是工作目录问题。使用 if (file_exists('../plans/'.$RID))
  • 我添加了绝对路径,但它仅在我指定文件扩展名时才有效(例如 if (file_exists('../plans/'.$RID.'.jpg')))。问题是我不想指定扩展名,因为文件类型不同。我只想要名称为 $RID 的文件,无论其扩展名是什么

标签: php html file-exists


【解决方案1】:

提供绝对路径作为函数的参数:

如果您的脚本路径是计划目录的父目录,则参数可以是 __DIR__ . '/plans' 例如。

edit :要捕获具有某些扩展名的文件,您可以创建一个包含允许扩展名的数组。

<td><?php
$extensionsAllowed = ['jpg','pdf','png']; //complete it
foreach ($extensionsAllowed as $extension){    
    if (file_exists( __DIR__ . 'plans/'.$RID.'.'.$extension)) {
      echo '<a href="plans/'.$RID.'.'.$extension.'" download>Plan</a>';
    } else {
      echo "not exists";
    }
?>  </td>

【讨论】:

  • 我添加了绝对路径,但它只有在我指定文件扩展名时才有效(例如 if (file_exists(' DIR . 'plans/'.$RID.'.jpg' )))。问题是我不想指定扩展名,因为文件类型不同。我只想要名称为 $RID 的文件,无论其扩展名是什么
  • @user2148116 我添加了一些关于扩展的信息
  • 谢谢!但如果是这些扩展呢?这个想法是扩展是什么
  • 接受任何扩展都是非常危险的。如果用户要求一个空白文件,附加什么?您的脚本可能会返回您的隐藏文件,例如 .htaccess 如果您想接受任何扩展名,您必须检索计划目录中的所有文件,并将它们的名称与用户询问的文件进行比较,而无需扩展名。但这显然是危险的。如果他问../../../etc/.htpasswd../../../config 会发生什么?您的脚本可能会返回数据来破解您的服务器。提供大量可用的扩展是不那么危险的。你提供什么样的文件?
【解决方案2】:

如果计划是您拥有用于检查文件的 php 文件的目录,则无需将计划放在文件名旁边的 file_exists 中

<td>  
<?php

if (file_exists($RID)) {
      echo"<a href='plans/$RID'>Plan</a>";
    } else {
        echo "not exists";
    }
?>

</td>

否则你可以这样做,

<?php

$Path = $_SERVER['DOCUMENT_ROOT'].'/plans/'.$RID;

if (file_exists($Path)) {
      echo"<a href='plans/$RID'>Plan</a>";
    } else {
        echo "not exists";
    }
?>

</td>

【讨论】:

    【解决方案3】:

    改变

    <td>  
    <?php
    
    if (file_exists('plans/'.$RID)) {
      echo"<a href='plans/$RID'>Plan</a>";
    } else {
        echo "not exists";
    }
    ?>  
    </td>
    

    <td>  
    <?php
    
    if (!file_exists('plans/'.$RID)) {
       mkdir('plans/'.$RID, 0777, true);
       echo"<a href='plans/$RID'>Plan</a>";  
    }
    ?>  
    </td>
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 2019-07-29
      • 2016-12-24
      • 2014-04-16
      • 2023-01-02
      • 2021-08-09
      • 2015-09-01
      • 1970-01-01
      相关资源
      最近更新 更多