Frage

Ich bin nur neugierig zu wissen, warum mime_content_type () jetzt als veraltet gilt.

Diese Methode den Mime-Typ für die Bestimmung ist viel einfacher als der Ersatz Fileinfo Funktionalität.

War es hilfreich?

Lösung

Ich denke, es liegt daran, Fileinfo können zurückkehren weitere Informationen über Dateien .

EDIT: Hier ist ein Ersatz-Hack:

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

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

    return false;
}

Andere Tipps

Das Verfahren ist nicht veraltet!

Es einmal falsch markiert wurde, wie im Handbuch veraltet, aber es wird behoben https: //bugs.php.net/bug.php?id=71367 am 14. Januar 2016. Doch im Moment ist es immer noch nicht richtig in dem deutschen, spanischen und chinesischen Handbuch als veraltet markiert.

Sie können ferner mime_content_type() verwenden, wann immer Sie möchten.)

Ein anderer Weg ist an den Konstruktor konstant FILEINFO_MIME zu übergeben.

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

Mit finfo_file und finfo_open und FILEINFO_MIME_TYPE :

finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );

Hier ist ein kleines Wrapper verschiedene PHP-Umgebungen abzudecken, abgeleitet von CSSMin.php in 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;
}

EDIT: Dank @ Adam und @ ficuscr für die Klärung, dass diese Funktion war in der Tat, nicht veraltet .

Wie von MediaWiki 1.30 wurde der obige Code wesentlich verändert (zurück) zu:

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

Das funktioniert:

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;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top