是否有可能在不知情的情况下获得文件扩展名?

时间:2011-07-07 17:57:37

标签: php filesystems file-extension

我有一个名为94bf663a100e848fb599209af8cdc2b5.wmv的文件。我知道如果我只使用名称94bf663a100e848fb599209af8cdc2b5,pathinfo将不会给我扩展名。我相信glob仅用于检查文件是否存在。那么只要知道文件名就可以获得文件扩展名(94bf663a100e848fb599209af8cdc2b5)吗?

4 个答案:

答案 0 :(得分:13)

正如php glob manual page上的示例所示,glob执行只检查文件是否存在,它会返回与表达式匹配的每个文件。

以下是根据您的需求修改that page上的示例:

$name = "94bf663a100e848fb599209af8cdc2b5";
$matching = glob($name . ".*");

$info = pathinfo($matching[0]);
$ext = $info['extension'];

这假设有一个(并且只有一个)具有该名称的文件(任何扩展名),但是如果文件可能不存在,或者可能存在多个文件,则应该能够修改它具有相同名称和不同扩展名的文件。

答案 1 :(得分:1)

finfo_file()函数将检查文件的字节签名以返回其mimetype。从那里,您可以大部分推断出正确的文件扩展名。

// Adapted from the PHP docs
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
echo finfo_file($finfo, $filename);
finfo_close($finfo);

答案 2 :(得分:0)

文件的前几个字符(二进制)通常会给你一些关于文件类型的提示。

通过在记事本中打开一些二进制文件(rar,zip,mp3等)来试试。

答案 3 :(得分:0)

在php中尝试filetype()mime_content_type()函数... 传递它返回文件类型的文件路径。