PHP - 在不知道扩展名的情况下检查文件是不是存在

Posted

技术标签:

【中文标题】PHP - 在不知道扩展名的情况下检查文件是不是存在【英文标题】:PHP - Check if file exists without knowing the extensionPHP - 在不知道扩展名的情况下检查文件是否存在 【发布时间】:2013-08-31 15:43:36 【问题描述】:

我已经看到this question,但它对我不起作用。

我需要做的是检查文件是否存在,在 php 中,不知道扩展名。 我使用此代码:

<?php 
if (count(glob("/database/".$_REQUEST['thetitle'].".*")) == 0) 
echo 'true';
 else 
echo 'false';

?>

编辑: 也许它是相关的说脚本位于

[root]/functions/validatefilename.php

和数据库中的

[root]/database/

但无论文件名 ($_REQUEST['thetitle']) 是什么,它总是返回 false。

【问题讨论】:

我怀疑您的文件位于 /database/...。那是磁盘的根! 对,我忘了。在 html 中,/database/ 将是我域根目录下的文件夹。那么你将如何在 PHP 中做到这一点? URLs 在 HTML 中是相对于当前/根 URL本地文件路径是相对于文件的位置位于磁盘/磁盘根目录上。 PHP 并不真正关心 URL。 URL 与本地文件路径无关,反之亦然。 【参考方案1】:

尝试:

count(glob("./database/".$_REQUEST['thetitle'].".*"))

【讨论】:

count(glob("../database/".$_REQUEST['thetitle'].".*")) 你确定你对数据库文件夹有正确的权限吗? http://www.php.net/glob 它成功了,这可能要归功于权限。但我也使用了if (glob("../database/".$_REQUEST['thetitle'].".*") == "") 【参考方案2】:

在我看来它工作正常,只是您应该指定完整路径:

if (count(glob( "/path/to/" . "database/" .$_REQUEST['thetitle']. ".*")) == 0) 

【讨论】:

正如我现在编辑的问题所示,/database/ 直接位于根目录之后,例如 website.com/database/ 你可能仍然需要明确地绘制出整个路径 我尝试了$thevar = glob("http://www.daltonempire.nl/database/Hello.*"); echo '"'; print_r($thevar); echo '"'; 并在那里放置了一个名为“Hello.png”的文件,但它仍然会回显“”

以上是关于PHP - 在不知道扩展名的情况下检查文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在不检查路径扩展名的情况下检查文件是不是为图像文件?

如何在不读取 InputStream 的情况下检查 InputStream 是不是为空?

在不移动文件指针的情况下检查文件指针是不是已达到 EOF?

如何在不下载的情况下使用其 URL 检查文件是不是存在?

在不使用 mod_rewrite 的情况下运行没有扩展的 PHP?

Node.js:如何在不上传文件列表的情况下检查文件夹是不是为空