Détection du type de fichier en PHP : dépannage des problèmes de téléchargement
Vous rencontrez des difficultés lors de la vérification des types de fichiers image à l'aide de $_FILES['fupload' ]['taper']. Les utilisateurs ont signalé des messages d'erreur incohérents, indiquant que cette méthode n'est peut-être pas fiable.
Pour garantir une détection précise du type de fichier, envisagez une approche alternative :
Utiliser mime_content_type
Votre suggestion d'utiliser mime_content_type($_FILES['fupload']['type']) est partiellement correcte. Cependant, il n'est toujours pas recommandé de se fier uniquement à la valeur fournie par l'utilisateur (c'est-à-dire le type MIME du fichier). Les utilisateurs peuvent facilement manipuler ces informations.
Une méthode plus fiable
Pour les fichiers image, une méthode privilégiée pour la vérification de type consiste à utiliser la fonction exif_imagetype comme suit :
$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
Utiliser fininfo Fonctions
Si votre serveur prend en charge l'extension finfo, vous pouvez utiliser des fonctions telles que finfo_file pour obtenir des informations détaillées sur le fichier, y compris son type MIME et d'autres attributs :
$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['fupload']['tmp_name']); $error = ($mime_type != 'image/gif' && $mime_type != 'image/png' && $mime_type != 'image/jpeg');
En employant ces méthodes, vous pouvez vérifier de manière fiable les types de fichiers et éviter les erreurs inattendues lors du téléchargement de fichiers.
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!