mimetype - ¿Por qué mime_content_type() está en desuso en PHP?
php get mime type upload file (4)
Otra forma es pasar a la constante constructora FILEINFO_MIME
.
$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file(''path/filename'');
Solo tengo curiosidad por 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 la funcionalidad de Fileinfo reemplazo.
Supongo que es porque Fileinfo puede devolver más información sobre los archivos .
EDITAR: Aquí hay un hack de reemplazo:
function _mime_content_type($filename) {
$result = new finfo();
if (is_resource($result) === true) {
return $result->file($filename, FILEINFO_MIME_TYPE);
}
return false;
}
Usando finfo_file
y finfo_open
, y FILEINFO_MIME_TYPE
:
finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );
Aquí hay un pequeño contenedor para cubrir diferentes entornos PHP, derivado de CSSMin.php en MediaWiki 1.20.0 :
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 a Adam y @ficuscr por aclarar que esta función, de hecho, no está en desuso .
A partir de MediaWiki 1.30, el código anterior se cambió esencialmente (atrás) a:
function getMimeType( $filename ) {
return mime_content_type( $filename );
}
¡El método no está en desuso!
Una vez se marcó incorrectamente como obsoleto en el manual, pero se corrigió https://bugs.php.net/bug.php?id=71367 el 14 de enero de 2016. Sin embargo, en este momento, todavía es incorrecto Marcado en desuso en el manual alemán, español y chino.
Siéntase libre de usar mime_content_type()
cuando lo desee :).