嗨,我正在寻找最好的方法来找出任何本地文件或网址的PHP中的mime类型.我已经尝试了php的mime_content_type函数,但由于它已被弃用,我正在寻找更好的解决方案在php中的所有文件格式.
mime_content_type — Detect MIME Content-type for a file ***(deprecated)***
我已经尝试过以下功能了
echo 'welcome'; if (function_exists('finfo_open')) { echo 'testing'; $finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, "http://4images.in/wp-content/uploads/2013/12/Siberian-Tiger-Running-Through-Snow-Tom-Brakefield-Getty-Images-200353826-001.jpg"); finfo_close($finfo); echo $mimetype; }
以上代码对我不起作用,我只看到welcome
输出.我不确定我在这里做错了什么.
下面的代码在我的本地工作,但它不适用于网址.
$file = './apache_pb2.png'; $file_info = new finfo(FILEINFO_MIME); // object oriented approach! $mime_type = $file_info->buffer(file_get_contents($file)); // e.g. gives "image/jpeg" $mime = explode(';', $mime_type); print $mime[0];
是否有一些工作为两者(网址和本地)工作.为php.also中的mime_content_type函数以外的所有内容(图像,视频,文件等)设置mime类型的最佳做法是什么.建议使用php中的mime_content_type函数,是php中的最佳实践吗?
利用file_info
PHP中的FILEINFO_MIME_TYPE
标志作为参数.
[从PHP手册中获取的示例]
<?php $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension foreach (glob("*") as $filename) { echo finfo_file($finfo, $filename) . "\n"; } finfo_close($finfo); ?>
OUTPUT :
text/html image/gif application/vnd.ms-excel
EDIT :
您需要启用您的扩展程序 PHP.ini
;extension=php_fileinfo.dll
从该行中删除分号并重新启动您的网络服务器,您就可以开始使用了.
Installation Doc.
找到答案,
要找到文件扩展名的最佳方法是对本地文件和url 使用path_info.
$info = pathinfo($filename); $basename = $info['basename']; $ext = $info['extension'];
为mime类型创建一个数组
$mimeTypes = array("mp4" => "video/mp4");//
- > 请参见此处和此处的示例
//get the mime type for file $type = isset($this->mime_types[$ext]) ? $this->mime_types[$ext] : "application/octet-stream";
上面的代码适用于url和本地文件.
注意 :
那些与CDN mp4视频mime类型视频/ mp4问题挣扎的人 - 我在我的class.s3.php文件中做了一个更改 - >在mime_type []数组中,并且还使用putObject()函数交叉检查.
mime类型的设置总是在编码方面完成,而不是在AWS S3存储桶中完成,我们需要使用
AWS PHP Class file or sdk
mime类型进行操作或在核心类文件中进行必要的更改(例如class.s3..sp)