PHP taille image

Résolu/Fermé
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014 - 17 nov. 2011 à 09:15
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014 - 17 nov. 2011 à 12:56
Bonjour à vous,

Je veux faire un contrôle sur la taille de l'image avant upload, mais je ne sais pas pourquoi, cela ne marche pas, quand je met une taille supérieure, il ne fait rien alors qu'il devrait m'afficher un message d'erreur.

  if(isset($_FILES['userfile']) && $_FILES['userfile']['size']>0)
  {
	$file_Extension 	= strtolower(pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION));
	$infosImg = getimagesize($_FILES['userfile']['tmp_name']);
	// -----------------
	if (filesize($_FILES['userfile']['tmp_name']) > 2097152) {
		echo "Taille !";
	}


Le formulaire:

		<h1>Ajouter une image:</h1>
		<br /> 
	    <form action="addimage.php" method="post" enctype="multipart/form-data">
		<input type="hidden" name="action" value="add" />
		<input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
       
 
		<p>Image:<br /><input type="file" name="userfile" /></p>
       
        <br />
		<p><input type="submit" name="submit" value="Envoyer" /></p>
A voir également:

11 réponses

jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 44
17 nov. 2011 à 09:18
La variable $_FILES['userfile']['tmp_name'] contient le nom du fichier envoyé, et ici on compare donc le nom du fichier à une taille ... ?
il faudrait utiliser $_FILES['userfile']['size'] qui contient la taille du fichier envoyé.
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 09:20
Merci pour la réponse :)

Malheureusement c'est pareil, il n'upload pas ça c'est bon, mais il ne se passe rien quand je clique sur le bouton.

Il devrait pourtant u avoir le message :(
0
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 44
17 nov. 2011 à 09:32
Alors si le fichier est plus grand que 5Mo il est bloqué à cause du champs MAX_FILE_SIZE du formulaire et n'est donc pas envoyé au serveur.
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 09:35
Il ne fait que 3 mo pourtant :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 44
17 nov. 2011 à 09:48
Bon ... ^^
Sinon, il me semle que $_FILES['userfile']['tmp_name'] ne contient que le chemin vers le fichier, il manque donc le nom du fichier (peut-être).
Il faudrait essayer avec $_FILES['userfile']['tmp_name'].'/'.$_FILES['userfile']['name']
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 09:55
Toujours rien :(

J'ai fait un echo du size file, il me renvoie bien le champ max size file.

C'est vraiment la comparaison qui ne se fait pas j'ai l'impression :(
0
jojo673 Messages postés 210 Date d'inscription lundi 19 septembre 2011 Statut Membre Dernière intervention 9 avril 2014 44
17 nov. 2011 à 09:58
Hmm alors il n'y a plus qu'a mettre des echos un peut partout voir si il rentre dans les if, si les valeurs prennent la bonne valeur ...
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 10:20
Je viens de faire un echo du size et du name.

C'est un truc de fou, si je met par exemple un .exe dans le formulaire, il va bien me renvoyer ça:

730344MassEffectLauncher.exe
( La taille et le texte )

Si je me met une grande image, il me revoie 0 !

0image.jpg
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 10:31
J'édite vite, fait, j'ai mon php.ini en max 2M en upload, donc c'est normal qu'il ne se passe rien.

J'ai augmenté et c'est bon, mais du coup, cela upload.

Y'a vraiment un soucis au niveau de la comparaison du size.
Il me renvoie bien la taille, mais ne stoppe pas en cas de valeur supérieure.

Tu ne verrais pas un oubli ou quelque chose ?
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 10:50
Résolu !

C'était le filesize qui faisait merder.

En l'enlevant:

if (filesize($_FILES['userfile']['tmp_name']) > 2097152)

Cela marche nickel.
Il y a moyen du coup de faire la comparaison avec la taille max du php.ini pour afficher aussi un message d'erreur au lieu qu'il ne fasse rien ?
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
17 nov. 2011 à 11:00
Si l'image est supérieur à la valeur du php.ini, l'image ne sera pas envoyé.
Tu ne pourras donc pas comparer le poid du fichier.
Si tu souhaites afficher un message d'erreur, il te faut vérifier l'état de l'upload.
Tu peux le faire en utilisant la variable $_FILES['userfile']['error'] .
UPLOAD_ERR_OK
    Valeur : 0; Aucune erreur, le fichier a bien été uploadé 
UPLOAD_ERR_INI_SIZE
    Valeur : 1; Le fichier excède le poids autorisé par la directive upload_max_filesize de php.ini 
UPLOAD_ERR_FORM_SIZE
    Valeur : 2; Le fichier excède le poids autorisé par le champ MAX_FILE_SIZE s'il a été donné 
UPLOAD_ERR_PARTIAL
    Valeur : 3; Le fichier n'a été uploadé que partiellement 
UPLOAD_ERR_NO_FILE
    Valeur : 4; Aucun fichier n'a été uploadé 

Voir ici: http://phpcodeur.net/articles/php/upload

Si ton problème est résolu, n'oublie pas modifier le statut comme tel en haut de cette page.
0
Solar13 Messages postés 204 Date d'inscription lundi 23 mai 2011 Statut Membre Dernière intervention 14 mai 2014
17 nov. 2011 à 12:56
Merci pour la réponse :)

Mais comment le présenter, j'ai fait cela mais ça ne marche pas, je dois mal m'y prendre:

if ($_FILES['userfile']['error'] == 2)
0