33

我只是想知道为什么mime_content_type()现在被认为已弃用。

这种确定 mime 类型的方法比替换Fileinfo功能要容易得多。

4

4 回答 4

55

该方法未弃用!

它曾经在手册中被错误地标记为已弃用,但已在2016 年 1 月 14 日 修复https://bugs.php.net/bug.php?id=71367 。但是,目前,它仍然不正确在德语、西班牙语和中文手册中标记为弃用。

随时可以随意使用mime_content_type():)。

于 2016-09-24T12:20:28.883 回答
26

我想这是因为 Fileinfo 可以返回有关 files 的更多信息

编辑:这是一个替换黑客:

function _mime_content_type($filename) {
    $result = new finfo();

    if (is_resource($result) === true) {
        return $result->file($filename, FILEINFO_MIME_TYPE);
    }

    return false;
}
于 2009-08-12T02:53:45.657 回答
6

另一种方法是传递给构造函数常量FILEINFO_MIME

$finfo = new finfo(FILEINFO_MIME);
$type  = $finfo->file('path/filename');
于 2013-06-10T20:39:47.623 回答
6

使用finfo_filefinfo_open, 和FILEINFO_MIME_TYPE:

finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );

这是一个涵盖不同 PHP 环境的小型包装器,源自MediaWiki 1.20 中的 CSSMin.php

function getMimeType( $filename ) {
        $realpath = realpath( $filename );
        if ( $realpath
                && function_exists( 'finfo_file' )
                && function_exists( 'finfo_open' )
                && defined( 'FILEINFO_MIME_TYPE' )
        ) {
                // Use the Fileinfo PECL extension (PHP 5.3+)
                return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath );
        }
        if ( function_exists( 'mime_content_type' ) ) {
                // Deprecated in PHP 5.3
                return mime_content_type( $realpath );
        }
        return false;
}

编辑:感谢@Adam@ficuscr澄清这个函数实际上并没有被弃用

从 MediaWiki 1.30 开始,上面的代码基本上被更改(返回)为:

function getMimeType( $filename ) {
        return mime_content_type( $filename );
}
于 2014-01-03T13:27:28.703 回答