使用php查找所有文件格式的Mime类型的文件或URL

 涵涵 发布于 2023-01-26 01:58

嗨,我正在寻找最好的方法来找出任何本地文件或网址的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中的最佳实践吗?

2 个回答
  • 利用file_infoPHP中的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.

    2023-01-26 04:10 回答
  • 找到答案,

    要找到文件扩展名的最佳方法是对本地文件和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 sdkmime类型进行操作或在核心类文件中进行必要的更改(例如class.s3..sp)

    2023-01-26 10:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有