PHP taille image

Résolu
Solar13 Messages postés 214 Statut Membre -  
Solar13 Messages postés 214 Statut Membre -
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>

11 réponses

  1. jojo673 Messages postés 235 Statut Membre 44
     
    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
  2. Solar13 Messages postés 214 Statut Membre
     
    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
  3. jojo673 Messages postés 235 Statut Membre 44
     
    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
  4. Solar13 Messages postés 214 Statut Membre
     
    Il ne fait que 3 mo pourtant :(
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jojo673 Messages postés 235 Statut Membre 44
     
    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
  7. Solar13 Messages postés 214 Statut Membre
     
    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
  8. jojo673 Messages postés 235 Statut Membre 44
     
    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
  9. Solar13 Messages postés 214 Statut Membre
     
    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
  10. Solar13 Messages postés 214 Statut Membre
     
    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
  11. Solar13 Messages postés 214 Statut Membre
     
    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
  12. arthezius Messages postés 3756 Statut Membre 475
     
    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
    1. Solar13 Messages postés 214 Statut Membre
       
      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