Je veux obtenir l'extension de l'image téléchargée.
Comme je le sais, le meilleur moyen est la fonction getimagesize()
.
mais le mime de cette fonction, retourne image/jpeg
lorsque l'image a l'extension .jpg
ou aussi .JPEG
.
Comment peut-on obtenir exactement l'extension?
vous pouvez utiliser image_type_to_extension
fonction avec le type d'image renvoyé par getimagesize
:
$info = getimagesize($path);
$extension = image_type_to_extension($info[2]);
$ext = pathinfo($filename, PATHINFO_EXTENSION);
Vous pouvez également utiliser les fonctions strrpos et substr pour obtenir l’extension d’un fichier.
$filePath="images/ajax-loader.gif";
$type=substr($filePath,strrpos($filePath,'.')+1);
echo "file type=".$type;
sortie: gif
si vous voulez une extension comme .gif
$type=substr($filePath,strrpos($filePath,'.')+0);
sortie: .gif
$image = explode(".","test.file.hhh.kkk.jpg");
echo end($image);
Une autre façon de le faire:
$ext = strrchr($filename, "."); // .jpg
Vous pouvez également exploser le nom du fichier avec des points et prendre la fin du tableau comme suit:
$ext = end(explode('.', 'image.name.gif'));
Selon: Deux manières différentes de trouver une extension de fichier dans PHP
Et une nouvelle façon pour vous lol:
$ext = explode('.', 'file.name.lol.lolz.jpg');
echo $ext[count($ext) - 1];
Pour ceux qui veulent vérifier si le type d'image est JPEG, PNG, etc. Vous pouvez utiliser exif_imagetype function. Cette fonction lit les premiers octets d'une image et vérifie sa signature. Voici un exemple simple tiré de php.net:
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>
$file_ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
ou pour le rendre propre
$filename= $_FILES["file"]["name"];
$file_ext = pathinfo($filename,PATHINFO_EXTENSION);
$size = getimagesize($filename);
$ext = explode('/', $size['mime'])[1];