有没有办法在没有实际文件的情况下检测文件的mime类型,例如,当您生成文件并将其作为下载服务时?
我目前正在使用文件扩展名嗅探: http://www.php.net/manual/en/function.mime-content-type.php#87856
我只是想知道是否还有其他方法在服务器上实际创建文件并使用FileInfo,mime_content_type()或file
答案 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 - 不应该有明显的速度惩罚,您可以使用标准功能