PHP FILEINFO MIME选项返回空字符串

时间:2009-04-21 01:23:24

标签: php mime-types file-upload

我正在尝试检查PHP应用程序中上传文件的MIME类型。我上传文件,然后执行此操作,其中$ file是我的文件的路径:

$finfo = new finfo(FILEINFO_MIME);
$mimetype = $finfo->file($file);

在这种情况下,$ mimetype始终为空字符串。我已经测试了几种文件类型(.jpg,.doc,.txt,.pdf),它总是空的。它应该返回类似“image / jpeg”的东西。

我正在调试并更改第一行,以便代码段现在是这样的:

$finfo = new finfo(FILEINFO_NONE);
$info = $finfo->file($file);

在这种情况下,当我上传jpg时,$ info是这样的:JPEG图像数据,JFIF标准1.02。所以现在我知道它正确地到达了文件,但是传入FILEINFO_MIME并没有给我正确的mime字符串。

这只发生在我的登台服务器上。在我的本地服务器上,我得到了正确的mime类型。有没有人知道为什么我的登台服务器为mime类型返回一个空字符串?

3 个答案:

答案 0 :(得分:1)

我想知道魔术文件是否正确放置在您的服务器上。

  

magic_file
  魔术数据库文件的名称,通常类似于/path/to/magic.mime。如果未指定,则使用MAGIC环境变量。如果未设置此变量,则默认使用/ usr / share / misc / magic。如果需要,可以添加.mime和/或.mgc后缀。

因为您可以通过最后一个参数指定自己的文件

$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic");

答案 1 :(得分:0)

试试这个:

<?php
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic');
$mime_type = $fi->buffer(file_get_contents($file));
?>

答案 2 :(得分:0)

您是否尝试过示例from the manual

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension

   echo finfo_file($finfo, $filename) . "\n";

finfo_close($finfo);
?>