"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment déterminer le type de fichier sans compter sur les extensions ?

Comment déterminer le type de fichier sans compter sur les extensions ?

Publié le 2024-11-09
Parcourir:859

How to Determine File Type Without Relying on Extensions?

Comment détecter les types de fichiers sans s'appuyer sur des extensions

Déterminer si un fichier est un format mp3 ou image au-delà de l'examen de son extension est un outil précieux tâche en programmation. Voici une solution complète qui ne repose pas sur les extensions :

PHP >= 5.3:

$mimetype = finfo_fopen(fopen($filename, 'r'), FILEINFO_MIME_TYPE);

PHP

$mimetype = mime_content_type($filename);

Alternatives :

  • exif_imagetype: Vérifie spécifiquement les types MIME d'image.
  • getimagesize: Similaire à exif_imagetype, mais peut avoir une dépendance à la bibliothèque problèmes.

Méthode proxy :

Pour une approche plus généralisée, envisagez d'intégrer ces fonctions dans une méthode proxy :

function getMimeType($filename)
{
    $mimetype = false;
    if (function_exists('finfo_fopen')) {
        // open with FileInfo
    } elseif (function_exists('getimagesize')) {
        // open with GD
    } elseif (function_exists('exif_imagetype')) {
        // open with EXIF
    } elseif (function_exists('mime_content_type')) {
        $mimetype = mime_content_type($filename);
    }
    return $mimetype;
}

En utilisant cette méthode proxy, vous pouvez facilement déterminer le type MIME d'un fichier en fonction de la disponibilité de différentes fonctions sur votre système.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3