Comment déterminer le « Content-Type » d'un fichier en PHP ?

Mary-Kate Olsen
Libérer: 2024-11-27 07:52:14
original
604 Les gens l'ont consulté

How do you determine the `Content-Type` of a file in PHP?

Comprendre l'identification du type de contenu en PHP

Lorsque vous joignez des fichiers à des e-mails, il est crucial de déterminer avec précision leur type de contenu. PHP propose différentes méthodes pour y parvenir.

Fonction de détermination du type de contenu

Pour répondre à ce besoin, la solution fournie propose la fonction suivante :

function getFileMimeType($file) {
    // Attempt to use PHP finfo functions
    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $file);
        finfo_close($finfo);
    }
    
    // Fallback to mime_content_type alternative
    else {
        require_once 'upgradephp/ext/mime.php';
        $type = mime_content_type($file);
    }
    
    // Further fallbacks if previous attempts failed
    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        // Use file command if available
        $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'))) {
        // Attempt to use exif_imagetype for images
        require_once 'upgradephp/ext/mime.php';
        $exifImageType = exif_imagetype($file);
        if ($exifImageType !== false) {
            $type = image_type_to_mime_type($exifImageType);
        }
    }
    
    return $type;
}
Copier après la connexion

Explication de la fonction

Cette fonction tente d'utiliser la fonction finfo de PHP pour identifier le mime taper. Si cela échoue, il revient à la fonction mime_content_type. Si aucun de ces éléments ne fonctionne, il tente d'exécuter la commande 'file' sur les systèmes *NIX. Enfin, il utilise exif_imagetype pour déterminer le type MIME des images.

Il convient de noter que différents serveurs prennent en charge différemment les fonctions de type MIME et que le remplacement Upgrade.php mime_content_type n'est pas toujours fiable. Cependant, la fonction exif_imagetype a tendance à fonctionner de manière cohérente sur tous les serveurs. Si vous êtes uniquement concerné par les fichiers image, vous pouvez envisager d'utiliser uniquement cette fonction pour déterminer le type MIME.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal