检测从数据库中提取的文件的 MIME 类型

Posted

技术标签:

【中文标题】检测从数据库中提取的文件的 MIME 类型【英文标题】:Detect MIME Type of file extracted from Database 【发布时间】:2017-01-18 03:01:13 【问题描述】:

我将文件存储在 mysql 数据库中。

我们需要找到这些文件的 MIME 类型,以强制文件在浏览器中打开而不是下载。

getimagesize 和 finfo 在这种情况下不起作用,因为它们需要一个参数作为文件的路径而不是文件内容。

有没有办法直接从文件内容中检测 php 中的 MIME 类型。

【问题讨论】:

为什么还要将文件保存到数据库中? 您是否也保存了扩展程序? 【参考方案1】:

您可以使用 finfo_open 和 finfo_buffer 获取 mime 类型。在此示例中,我从 google 读取图像内容并获取其 mimetype:

<?php

$Resource = finfo_open(FILEINFO_MIME);
$Info     = finfo_buffer($Resource, file_get_contents('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png')); // Returns: image/png; charset=binary

list($Mime, $Other) = explode(";", $Info);

echo $Mime; // image/png

【讨论】:

以上是关于检测从数据库中提取的文件的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中检测上传文件的 MIME 类型

MIME 类型检测是检测一种文件的最佳方法吗?

使用 mime multipart 从文件中提取内容

Codeigniter:在 mac safari 中未检测到 vcf mime 类型

Tika检测文件类型

Mime 类型检测在 PHP 5.3.8 上使用 fileinfo 失败