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

标签 php amazon-web-services mime-types content-type cdn

您好,我正在寻找在 php 中找出任何本地文件或 url 的 mime 类型的最佳方法。 我试过mime_content_type php 的功能,但由于它已被弃用,我正在为所有文件格式寻找更好的 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 的输出。我不确定我是否在这里做错了什么。


下面的代码在我的本地以某种方式工作,但它不适用于 url。

$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 中的 mime_content_type 函数之外,是否有一些解决方法(url 和 local)。为所有内容(图像、视频、文件等)设置 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);
?>

输出:

text/html
image/gif
application/vnd.ms-excel

编辑:

您需要在您的 PHP.ini 上启用扩展

;extension=php_fileinfo.dll

从该行中删除分号并重新启动您的网络服务器,您就可以开始了。
Installation Doc.

关于php - 使用 php 为所有文件格式查找 Mime 类型的文件或 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906596/

相关文章:

php - 关于 MySQL/PHP 中事务(或表锁?)的问题

php - 如何取消引用构造函数?

php - 如何用 C++ 扩展 PHP?

amazon-web-services - 并非所有存储都可用于 Amazon EBS

python - 如何处理boto3的错误?

amazon-web-services - terraform aws apigateway path_part

php - 跨多个网页使 PHP 变量成为全局变量

PHP Mail - 发现多个或格式错误的换行符

html - 在网络应用程序中显示文件类型图标?

.net - 是否可以通过 ResourceManager 检索 .NET 资源项的实际内容类型(MIME 类型)?