【问题标题】:PHP's FILEINFO_MIME option returns empty stringPHP 的 FILEINFO_MIME 选项返回空字符串
【发布时间】:2010-10-20 17:16:43
【问题描述】:

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

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

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

我正在调试并更改了第一行,因此代码 sn-p 现在是这样的:

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

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

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

【问题讨论】:

  • 返回空字符串还是FALSE?
  • 它返回空字符串。

标签: php mime-types file-upload


【解决方案1】:

你试过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);
?>

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的建议,但我仍然收到一个空字符串。
    • 我的 MIME 文件在 /usr/share/file/magic 中,但结果也一样。
    【解决方案3】:

    试试这个:

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

    【讨论】:

    • 这也给了我一个空字符串。
    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2017-07-03
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多