Maison >développement back-end >tutoriel php >Comment puis-je déterminer le type de contenu d'un fichier en PHP ?

Comment puis-je déterminer le type de contenu d'un fichier en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 13:44:02259parcourir

How Can I Determine the Content-Type of a File in PHP?

Déterminer le type de contenu d'un fichier en PHP

Lors de l'envoi d'un e-mail avec une pièce jointe, il est crucial de spécifier le contenu correct tapez pour ce fichier. Cela guide le client de messagerie dans la gestion appropriée du fichier. En PHP, vous pouvez récupérer le type de contenu en utilisant différentes méthodes.

Utilisation de 'finfo_file()' (Recommandé)

Si votre version PHP prend en charge l'extension finfo, vous peut utiliser 'finfo_file()' pour obtenir le type MIME du fichier. Voici un exemple :

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$contentType = finfo_file($finfo, $file);
finfo_close($finfo);

Utilisation de 'mime_content_type()'

Une ancienne alternative à 'finfo_file()' est la fonction 'mime_content_type()'. Cependant, il se peut qu'il ne soit pas disponible dans toutes les versions de PHP.

require_once 'upgradephp/ext/mime.php'; // Load the mime extension if necessary
$contentType = mime_content_type($file);

Options de secours

Si aucune des méthodes ci-dessus ne fournit un résultat fiable, vous pouvez envisager d'utiliser ces options de secours :

  • exec('file -b --mime-type ...') : Exécute la commande 'file' sur le fichier pour obtenir son type MIME . Cette méthode fonctionne sur les systèmes *NIX.
  • exif_imagetype() : Si le fichier est une image, cette fonction peut déterminer son type MIME.
  • 'upgradephp /ext/mime.php' : Upgrade.php fournit des fonctions de secours mime_content_type() qui peuvent combler les lacunes des anciennes versions de PHP.

Exemple d'utilisation

Voici un exemple qui combine toutes ces options :

function getFileMimeType($file) {
    $contentType = null;

    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $contentType = finfo_file($finfo, $file);
        finfo_close($finfo);
    } elseif (function_exists('mime_content_type')) {
        require_once 'upgradephp/ext/mime.php';
        $contentType = mime_content_type($file);
    } elseif (is_file($file)) {
        // Executing 'file' command
    } elseif (@exif_imagetype($file)) {
        // Determining image mime type
    }

    return $contentType;
}

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