Vérification du mime-type, de l'extension et de la taille
Résolu
Bonjour,
Je sollicite votre aide pour vérifier l'extension et la taille d'une image lorsqu'un utilisateur ajoute cette dernière, histoire d'éviter de mauvaises surprises dans l'avenir:
Voici ma fonction savephoto:
Je sollicite votre aide pour vérifier l'extension et la taille d'une image lorsqu'un utilisateur ajoute cette dernière, histoire d'éviter de mauvaises surprises dans l'avenir:
Voici ma fonction savephoto:
function savePhoto($id_annonce,$file,$location){
if(empty($file)){
echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload";
var_dump($_FILES);
return false;
}
$error='';
//mime-type
$mime_types = array('png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif');
//taille
$taille_maxi= 3Mo;
$photo = $file['name'];
$photo_tmp = $file['tmp_name'];
if(isset($mime_types)){
if ($photo>$taille_maxi)
{$error = 'Le fichier est trop gros...';}
if(move_uploaded_file($photo_tmp,$location.$photo)){
return insertPhoto($id_annonce,$location.$photo);
} else{
$error = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...';
}
}
Configuration: Windows / Chrome 97.0.4692.71
6 réponses
-
Contributeurbonjour,
$photo_taille = $file['size'];
-
ModérateurBonjour,
function savePhoto($id_annonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; return false; //pas d'image } //taille $taille_maxi= 100000; // A noter qu'il y a aussi un paramétrage dans le php.ini pour limiter la taille max des fichiers qu'on peut uploader! $photo_taille = $file['size']; $photo = $file['name']; $photo_tmp = $file['tmp_name']; if (is_uploaded_file($photo_tmp)) { // Notice how to grab MIME type. $mime_type = mime_content_type($photo_tmp); //mime-type $allowedMimes = array( 'image/png', 'image/jpeg', 'image/jpeg', 'image/jpeg', 'image/gif' ); if(!in_array($mime_type,$allowedMimes){ echo "Type de fichier " . $mime_type . " invalide !"; return false; } //pour les tests: echo "<br>photo_taille : " . $photo_taille; echo "<br>taille_maxi : " . $taille_maxi; if ($photo_taille > $taille_maxi){ echo 'Le fichier est trop gros...'; return false; } if(move_uploaded_file($photo_tmp,$location.$photo)){ return insertPhoto($id_annonce,$location.$photo); } }else{ echo "<br>Erreur lors de l'upload du fichier !"; return false; } }
-
Bonjour yg_be, merci pour ta réponse :)
Je n'ai pas d'erreur. J'ai dû changer l'unité Mo de la variable $taille_maxi, et laissé celle sans unité.
Question: C'est combien 100000? Est-ce 10 Mo ou 1 Mo?function savePhoto($id_annonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); return false; //pas d'image } $error=''; //mime-type $mime_types = array('png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif'); //taille $taille_maxi= 100000; $photo_taille = $file['size']; $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(isset($mime_types)){ if ($photo_taille>$taille_maxi) {$error = 'Le fichier est trop gros...';} if(move_uploaded_file($photo_tmp,$location.$photo)){ return insertPhoto($id_annonce,$location.$photo); } else{ $error = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...'; } } -
Mais pourquoi lorsque j'ai ajouté une image à 1 294 160 octets ça n'affiche pas que le fichier est trop gros?
-
J'ai ajouté un echo et ça n'a pas affiché l'erreur:
function savePhoto($id_annonce,$file,$location){ if(empty($file)){ echo "<br> ERREUR : Aucune image n'est envoyées pour l'upload"; var_dump($_FILES); // juste pour le debug... return false; //pas d'image } //mime-type $mime_types = array('png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif'); //taille $taille_maxi= 100000; $photo_taille = $file['size']; $photo = $file['name']; $photo_tmp = $file['tmp_name']; if(isset($mime_types)){ if ($photo_taille>$taille_maxi) {echo 'Le fichier est trop gros...';} if(move_uploaded_file($photo_tmp,$location.$photo)){ return insertPhoto($id_annonce,$location.$photo); } } else{ echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...'; } } -
Bonjour Jordane, ça marche parfaitement. Si la taille de l'image est supérieure à, l'annonce n'affiche pas d'image. Merci !