Maison >développement back-end >tutoriel php >Comment déterminer de manière fiable le type de contenu d'un fichier en PHP ?

Comment déterminer de manière fiable le type de contenu d'un fichier en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-15 05:26:02625parcourir

How to Reliably Determine File Content-Type in PHP?

Détermination du type de contenu d'un fichier en PHP

En PHP, il est essentiel de déterminer le type de contenu d'un fichier lors de son envoi en tant que pièce jointe à un e-mail. Cela garantit que le type MIME correct est spécifié dans l'en-tête, permettant au logiciel de réception de gérer correctement le fichier.

Obtention du type de contenu

L'approche recommandée consiste à utilisez la fonction getFileMimeType() :

function getFileMimeType($file) {
    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $file);
        finfo_close($finfo);
    } else {
        require_once 'upgradephp/ext/mime.php';
        $type = mime_content_type($file);
    }

    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        $secondOpinion = exec('file -b --mime-type ' . escapeshellarg($file), $foo, $returnCode);
        if ($returnCode === 0 && $secondOpinion) {
            $type = $secondOpinion;
        }
    }

    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        require_once 'upgradephp/ext/mime.php';
        $exifImageType = exif_imagetype($file);
        if ($exifImageType !== false) {
            $type = image_type_to_mime_type($exifImageType);
        }
    }

    return $type;
}

Cette fonction tente de déterminer le type de contenu à l'aide de diverses méthodes, notamment :

  • Fonctions finfo de PHP (si disponibles)
    *mime_content_type() de la bibliothèque Upgrade.php
  • La commande de fichier du système d'exploitation (pour les systèmes *NIX)
  • exif_imagetype() pour les fichiers image

En utilisant plusieurs méthodes, cette fonction fournit une solution fiable pour obtenir le type de contenu correct, quel que soit le système d'exploitation ou l'environnement PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn