2012-02-02 91 views
2

我正在使用fileinfo来获取MIME类型和说明。 目前,我创建了两个FINFO对象,像这样:Fileinfo:MIME类型和说明

$x = new finfo(FILEINFO_NONE, ....); 
print $x->file($filename); 
print '\n'; 
$x = new finfo(FILEINFO_MIME, ....); 
print $x->file($filename); 

这导致这样的事情:

application/pdf; charset=binary 
PDF document, version 1.2 

它工作得很好,对我来说是有一种方式来获得的描述和MIME一次通话中的信息?

回答

2

呃,是非常简单的,我不知道我不可能看见这个早些时候: 对于方法“文件”,还有第二个可选参数,就像这样:

$x = new finfo(FILEINFO_NONE, ....); 
print $x->file($filename); 
print '\n'; 
print $x->file($filename, FILEINFO_MIME); 
+0

但我以为你一直在寻找所有的信息“在一个电话”。 – showdev 2017-06-14 18:01:52

0

这是未经测试,但文档指出的finfo_open()第一个参数接受“一个或多个Fileinfo的常量的脱节”,这意味着我们应该能够OR一些常量在一起:

$x = new finfo(FILEINFO_NONE | FILEINFO_MIME, ...); 
+0

已经尝试过,但作为FILEINFO_NONE是0(零),FILEINFO_NONE | FILEINFO_MIME等于FILEINFO_MIME。 – 2012-02-03 12:00:18

+0

@约翰史密斯,啊废话!在这种情况下,我认为不可能一口气做到这一点。 – Brad 2012-02-03 15:18:26

0

如果你想RÊVE rt为旧值,没有字符集,PHP 5.3引入了FILEINFO_MIME_TYPE常量。从FILEINFO_MIME切换到FILEINFO_MIME_TYPE

if(class_exists('finfo')&&defined('FILEINFO_MIME')) 
    { 
     $finfo = new finfo(FILEINFO_MIME); 
     return $finfo->file($_FILE['tempname']); 

    } 

例如用于php_file返回: 文本/ X-PHP;字符集= UTF-8

,但下面的代码:

if(class_exists('finfo')&&defined('FILEINFO_MIME_TYPE')) 
    { 
     $finfo = new finfo(FILEINFO_MIME_TYPE); 
     return $finfo->file($_FILE['tempname']); 

    } 

为php_file回报:0​​文本/ X-PHP

看到以下链接: http://debugsober.com/blog/PHP-53-Fileinfo-and-weird-mime_type-charsets

+0

这不会返回说明。 – Barmar 2012-10-02 04:57:42