PHP如果文件存在,则始终显示存在

时间:2013-12-14 09:33:45

标签: file echo exists

我有数据库列attach1和attach2。 我需要显示这些列中的文件(pdf),但前提是它们存在于目录www.domain.com/uploads中。 Attach1包含真实文件,但attach2不包含。

我试过这样的事情:

<?php
$file = $row['attach'];
$exists = file_exists('uploads/'.$file.''); 
if ($exists) {
  echo $file;
}
if (!$exists) {
  echo 'No file1';
}      
?>

<?php
$file2 = $row['attach2'];
$exists = file_exists('uploads/'.$file2.''); 
if ($exists) {
  echo $file2;
}
if (!$exists) {
  echo 'No file2';
}      
?> 

但是每当它回复时,该文件就存在,即使attach2不包含任何内容。为什么呢?

1 个答案:

答案 0 :(得分:2)

如果您的文件名为空,那么您只将目录名称传递给file_exists。目录也是文件。我估计该目录确实存在。它不是骗你的。

您可以检查数据库中的文件名是否为空,或者您可以将整个字符串传递给函数is_dir以查看它是否是目录。我假设你只想要常规文件。

这看起来像这样:

 <?php
 $file = $row['attach'];
 $exists = file_exists('uploads/'.$file.'') && !is_dir('uploads/'.$file.''); 
 if ($exists) {
   echo $file;
 } else {
   echo 'No file1';
 }      
 ?>

我更改了if语句以使用else子句。这相当于像你一样使用第二个if