当实际文件不存在时,如何用PHP检测mime类型?

时间:2011-01-28 04:17:23

标签: php mime-types

有没有办法在没有实际文件的情况下检测文件的mime类型,例如,当您生成文件并将其作为下载服务时?

我目前正在使用文件扩展名嗅探: http://www.php.net/manual/en/function.mime-content-type.php#87856

我只是想知道是否还有其他方法在服务器上实际创建文件并使用FileInfo,mime_content_type()或file

4 个答案:

答案 0 :(得分:2)

尝试Fileinfo finfo_buffer()功能:

$filename = 'image.jpg';
$contents = file_get_contents($filename);

$finfo = finfo_open(FILEINFO_MIME_TYPE);
var_dump( finfo_buffer($finfo, $contents) ); // string(10) "image/jpeg"

你说“实际上没有创建文件”,所以即使它使用Fileinfo,这似乎也符合你的要求。

答案 1 :(得分:0)

如果你知道你正在生成的文件类型,只需参考一组已知的mime类型并适当地应用。

答案 2 :(得分:0)

你可能想要管它:

 $type = `echo $FILE_CONTENTS | file -bi -`

阅读:这是个坏主意。不要这样做。 '命令行注入'(感谢Andrew Moore指出这一点。)

答案 3 :(得分:0)

您是否尝试将其写入ramdisk - 不应该有明显的速度惩罚,您可以使用标准功能