如何从没有扩展名的文件名获取文件扩展名?

时间:2014-07-05 03:41:38

标签: php file-extension fileinfo

PHP:我在一个文件夹中上传图片文件,其名称格式与postid_posttype_postserial.ext类似,因此在显示特定博客文章时我会根据帖子ID使用此格式,帖子类型为帖子。但这里的问题是我没有该文件的扩展名。所以这是实际的问题,我如何得到一个文件的扩展名,我只知道名称(在name.ext中)而不是扩展名。

仅供参考我搜索了这个,我发现很少有函数返回扩展名,但你必须传递一个带扩展名的完整文件名才能获得有关该文件的信息。

1 个答案:

答案 0 :(得分:2)

在您的情况下,您需要获取文件的 mime类型,然后在PHP中执行switch语句。您可以通过以下方式获取文件的mime类型:

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime_type = finfo_file($finfo, $postid_posttype_postserial_file);
finfo_close($finfo);

$mime_types = array(
    'image/gif' => '.gif',
    'image/jpeg' => '.jpg',
    // etc.
);

$ext = array_key_exists($mime_type, $mime_types) ? $mime_types[$mime_type] : false;
echo $ext;

了解详情:http://www.php.net/manual/en/function.finfo-file.php

更新2:正如评论所指出的,将switch替换为array匹配更为优雅。