0

我曾经在使用 finfo_open(FILEINFO_MIME_TYPE) 时获得不同的 MIMI 类型。

例如,基于内存,我相信 docx 是 application/vnd.openxmlformats-officedocument.wordprocessingml.document (请参阅此 StackOverflow 帖子What is a correct mime type for docx, pptx etc?)。我还记得它们显示为 application/zip,但这可能是在使用 mime_content_type() 时。此外,认为 js 文件以 application/x-javascript 的形式出现。

下面是我现在与脚本一起显示它们的内容。我最近更新到 PHP 5.14,想知道是否有新标准或者我是否搞砸了。我对此很好,但必须更改我的脚本,将扩展与 MIMI 类型进行比较。

编辑 - 刚刚在 PHP 手册中找到以下内容。

自 PHP >= 5.3.11 和 >= 5.4.1 起,magic 数据库格式发生了变化。因此,升级了内部 mime 数据库。这尤其会影响读取外部魔法的代码。读取旧格式的魔法文件将不起作用。此外,mime 类型的一些文本表示也发生了变化,例如对于 PHP,将返回“PHP 脚本,ASCII 文本”而不​​是“PHP 脚本文本”。

谢谢

基于以下脚本的 MIMI 列表

- directory
csv - text/plain
doc - application/msword
docx - application/msword
htm - text/html
ini - text/plain
jpg - image/jpeg
js - text/plain
mp3 - application/octet-stream
pdf - application/pdf
php - text/html
pptx - application/vnd.ms-powerpoint
pst - application/octet-stream
so - application/x-sharedlib
txt - text/plain
wmv - video/x-ms-asf
xls - application/msword
xlsx - application/vnd.ms-excel
zip - application/zip

PHP 代码

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
    $files[pathinfo($filename, PATHINFO_EXTENSION)]=array('filename'=>$filename,'finfo'=>finfo_file($finfo, $filename));
}
ksort($files);
foreach ($files as $fileext=>$file) {
    echo ($fileext.' - '.$file['finfo'].'<br />');
}
finfo_close($finfo);
?>
4

1 回答 1

0

打印的 mime 类型会因系统配置而异。如果系统配置为在 MSWord 中打开 .docx 文件,那么它将具有application/mswordmime 类型。同样,如果将相同的扩展名 .docx 配置为在 LibreOffice 中打开,它将具有application/vnd.openxmlformats-officedocument.wordprocessingml.documentmime 类型。

由于这种对服务器配置的依赖性,mime 类型不是很可靠。

于 2012-06-29T15:38:00.143 回答