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; }
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!