[résolu]connaitre la taille d'un fichier upload

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [résolu]connaitre la taille d'un fichier upload

par Invité » 08 déc. 2005, 11:58

merci bcp pour vos réponses!!!!

par Xenon_54 » 07 déc. 2005, 17:33

Tu peux fixé une limite dans le code du formulaire, mais tu seras toujours limité par la configuration du serveur.
Bien qu'un utilisateur malveillant peut très bien modifier le formulaire et augmenter la limite de taille de fichier, le champ est principalement utilisé pour avertir l'utilisateur qu'un fichier est trop volumineux avant même son transfert. Cela permet d'éviter à l'utilisateur d'attendre le transfert du fichier pour finalement se voir interdire l'upload pour cause de fichier trop volumineux.

Donc il est préférable de contre vérifier la taille du fichier uploader afin de s'assurer que la limite a bien été appliquée.

par iclo » 07 déc. 2005, 16:22

Tu peux fixé une limite dans le code du formulaire, mais tu seras toujours limité par la configuration du serveur.

par nath-0-0 » 07 déc. 2005, 15:59

j'ai été sur ce tuto
http://www.phpfrance.com/tutoriaux/inde ... e-fichiers

mais apparemment il est pas complet.

Donc si j'ai bien compris c'est le champs caché
<input type="hidden" name="MAX_FILE_SIZE" value="200000" />
qui stoppe l'upload??

Il me semble que c'est pas pris en compte dans le tuto cité ci-deesus.
mais j'ai été voir celui la :
http://www.phpfrance.com/forums/voir_sujet-545.php

qui me semble plus complet au niveau des test :)

Alors je vais voir ce que cela donne...

Merci


pc est ce que qq saurait si il est possible de changer le format de l'image par un traitement php et ainsi le rendre moins volumineux?

par iclo » 07 déc. 2005, 15:32

L'upload s'arrête lorsque tu dépasse la taille maximale, donc le fichier n'est pas transmis, et il n'est pas possible d'en récuperer la taille.
La doc devrait te renseigner sur la gestion de ce genre d'erreur.

[résolu]connaitre la taille d'un fichier upload

par nath-0-0 » 07 déc. 2005, 15:10

Bonjour,

Lorsqu'un fichier dépasse la taille max autorisée, je n'ai pas le message d'ereur.
Je n'ai d'ailleurs rien du tout concernant la taille de mon fichier

Code : Tout sélectionner

if(isset($_FILES['photo'])){ // params unset($erreur); $extensions_ok = array('png', 'gif', 'jpg', 'jpeg','JPG','JPEG','PNG', 'GIF'); $taille_max = 200000; $dest_dossier = '../photo/'; $taille_fic = filesize($_FILES['photo']['tmp_name']); $extension = substr(strrchr($_FILES['photo']['name'], '.'), 1); echo '<br />taille'.$taille_fic; echo '<br />exist'.file_exists($_FILES['photo']['tmp_name']); // vérifications if( !in_array($extension, $extensions_ok ) ) { $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; }elseif( (file_exists($_FILES['photo']['tmp_name'])and ($taille_fic > $taille_max))|| $taille_fic==0){ $erreur = 'Votre fichier doit faire moins de 200Ko !'; } // copie du fichier if($erreur==''){ $dest_fichier = basename($_FILES['photo']['name']); // enlever les accents $dest_fichier = strtr($dest_fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplacer les caracteres autres que lettres, chiffres et point par _ //dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); $dest_fichier = 'bi'.$idBien.'f'.$idphoto; $dest_fichier= $dest_fichier.'.'.$extension; //echo $dest_fichier; move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier); // insertion dans la base if ($nbphoto==0){ $sql="INSERT INTO photo (`idphoto`,`fkbien` ,`nomfic`,`url` ,`taille`,`favori`) VALUES " ; $sql.=" ('','$idBien','$dest_fichier','$dest_dossier','$taille_fic',1);"; }else{ $sql="INSERT INTO photo (`idphoto`,`fkbien` ,`nomfic`,`url` ,`taille`,`favori`) VALUES " ; $sql.=" ('','$idBien','$dest_fichier','$dest_dossier','$taille_fic',0);"; } $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }else{ $erreur= '<br /><span id="erreur">'.$erreur.'</span>'; } } }
voici mon formulaire

Code : Tout sélectionner

<form method="POST" action="a_foto.php" enctype="multipart/form-data"> <div id="contenuc"> <input type="hidden" value="40" id="idbien" name="idbien"> <h2>Gestion des photos</h2> <p id="foto"> Vous pouvez ins&eacute;rer 10 photos au maximum.La photo favorie apparaitra dans la liste des biens.<br/> Pour supprimer une photo il faut d'abord choisir une autre photo en tant que favorie.<br/><br/> </p> <ul id="photosave"> <li ><img src="../photo/bi40f4.jpg" alt="photo" /><br /><a href="a_foto.php?idbien=40&etat=supprimer&idphoto=27"><img style="height:15px;width:15px;" src="../image/delete.gif" title="Supprimer cette photo" alt="Effacer"/></a><a href="a_foto.php?idbien=40&etat=coeur&idphoto=27"><img style="height:15px;width:15px;" src="../image/heart.gif" title="Mettre en favoris" alt="Coeur"/></a></li><li ><img src="../photo/bi40f6.jpg" alt="photo" /><br /><a href="a_foto.php?idbien=40&etat=supprimer&idphoto=29"><img style="height:15px;width:15px;" src="../image/delete.gif" title="Supprimer cette photo" alt="Effacer"/></a><a href="a_foto.php?idbien=40&etat=coeur&idphoto=29"><img style="height:15px;width:15px;" src="../image/heart.gif" title="Mettre en favoris" alt="Coeur"/></a></li><li style="border:1px solid #FF0000;"><img src="../photo/bi40f7.jpg" alt="photo" /><br />favori</li><li ><img src="../photo/bi40f8.jpg" alt="photo" /><br /><a href="a_foto.php?idbien=40&etat=supprimer&idphoto=31"><img style="height:15px;width:15px;" src="../image/delete.gif" title="Supprimer cette photo" alt="Effacer"/></a><a href="a_foto.php?idbien=40&etat=coeur&idphoto=31"><img style="height:15px;width:15px;" src="../image/heart.gif" title="Mettre en favoris" alt="Coeur"/></a></li> </ul> <br /> <div id="enregistrerimage"><!-- Limiter la taille des fichiers à 200Ko --><input type="hidden" name="MAX_FILE_SIZE" value="200000" /><fieldset id="photo"><!-- champs d envoi de fichier, de type file --><p><label for="photo">Ajouter une photo&nbsp;</label><input type="file" name="photo" id="photo"/>&nbsp;<!-- bouton d envoi --><input type="submit" class="StandardButton120" name="envoi" value="Enregistrer" /></p></fieldset></div></div> </form>
echo '<br />taille'.$taille_fic;
echo '<br />exist'.file_exists($_FILES['photo']['tmp_name']);

ces deux dernier ne me retourne rien du tout....pourquoi???