Pregunta

Sólo tengo curiosidad de saber por qué mime_content_type() ahora se considera obsoleto.

Este método para determinar el tipo mime es mucho más fácil que el reemplazo de la Fileinfo la funcionalidad.

¿Fue útil?

Solución

supongo que es porque Fileinfo puede devolver más información sobre los archivos .

EDIT: Aquí es un truco de sustitución:

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

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

    return false;
}

Otros consejos

El método no está obsoleto!

Una vez se marcó incorrectamente como obsoleto en el manual, pero se ha fijado https: //bugs.php.net/bug.php?id=71367 en el 14 de enero el 2016. Sin embargo, por el momento, sigue siendo incorrecto marcado en desuso en el manual alemán, español y chino.

No dude en utilizar mime_content_type() siempre que lo desee:.)

Otra manera es pasar al constructor FILEINFO_MIME constante.

$finfo = new finfo(FILEINFO_MIME);
$type  = $finfo->file('path/filename');

El uso de finfo_file y finfo_open, y FILEINFO_MIME_TYPE:

finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );

Aquí un pequeño contenedor para cubrir los diferentes entornos PHP, derivado de CSSMin.php en MediaWiki 1.20:

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;
}

EDITAR: Gracias @Adam y @ficuscr para aclarar que esta función era, en realidad, no se desestima.

Como de MediaWiki 1.30, el código anterior era esencialmente cambiado (de nuevo) a:

function getMimeType( $filename ) {
        return mime_content_type( $filename );
}

Esto funciona:

if (!function_exists('mime_content_type')) {

    function mime_content_type($filename)
    {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mimeType = finfo_file($finfo, $filename);
        finfo_close($finfo);

        return $mimeType;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top