bambino Posté 1 Février 2005 Posté 1 Février 2005 hello, Y aurait-t-il une solution pour bloquer l'upload d'image, limité par exemple à 500Ko, avant que celle-ci ne soit envoyée sur le serveur? ciao a tutti!
bambino Posté 1 Février 2005 Auteur Posté 1 Février 2005 ok, mais le fichier est-il bloquer avant l'upload ou après celui-ci? C'est surtout pour une econnomie de bande passante... merci
Dan Posté 1 Février 2005 Posté 1 Février 2005 Je corrige le tir, mon post précédent était faux Tu dois pouvoir arriver à déterminer la taille du fichier en JavaScript, et mettre ce code dans une fonction appelée lors du submit du formulaire. Je dois pouvoir mettre la main sur un bout de code Dan
bambino Posté 1 Février 2005 Auteur Posté 1 Février 2005 Je corrige le tir, mon post précédent était faux Tu dois pouvoir arriver à déterminer la taille du fichier en JavaScript, et mettre ce code dans une fonction appelée lors du submit du formulaire. Je dois pouvoir mettre la main sur un bout de code Dan <{POST_SNAPBACK}> ok, mais le javascript est coté client donc il est possible de passer outre.. non?
Dan Posté 1 Février 2005 Posté 1 Février 2005 Décidément... je répond à côté. JavaScript ne peut pas tester la taille d'un fichier pour des raisons de sécurité. Il peut tester la taille de la page courante et de ses images, donc tu devrais pouvoir afficher l'image et en faire calculer la taille par JavaScript. function calculate(){ if (!document.fileSize) { alert('Votre navigateur ne supporte pas filesize.'); return; } var size = (document.fileSize)*1; var y = document.images; var imglength = 0; for (i=0;i<y.length;i++) { imglength += (y[i].fileSize)*1; } var total = size + imglength; var writestring = 'Taille fichier HTML: ' + size; writestring += '\nTaille des images: ' + imglength; writestring += '\nTaille totale: ' + total; if (total > 512000) writestring += "\nFichier trop volumineux!"; alert(writestring);} En ne testant que les images, tu peux déterminer la taille de celles-ci .
Dan Posté 1 Février 2005 Posté 1 Février 2005 Le problème est que ton code ne peut s'exécuter que du côté client, parce que toute exécution du côté serveur suppose le téléchargement a priori du fichier. Pas d'autre solution à mon sens.
Sarc Posté 1 Février 2005 Posté 1 Février 2005 <input type='hidden' name='MAX_FILE_SIZE' value='20000'> Il me semble que mettre ça dans le formulaire, juste avant le balise input type="file" permet de bloquer le transfert si le fichier demandé est trop gros... A vérifier mais il semble que ça marche... à peu pres
Dan Posté 1 Février 2005 Posté 1 Février 2005 Je me souviens pour avoir essayé ce code qu'il ne marchait pas sur tous les navigateurs... mais ma mémoire me joue peut-être des tours. Dan
Dan Posté 1 Février 2005 Posté 1 Février 2005 C'est déjà un premier pas non Dan ? Oui, tout à fait. Mais au moment où j'avais testé cette balise on en était aux versions précédentes des navigateurs (je suis un "vieux ) Peut-être que cela marche mieux sur la dernière génération Merci pour ce rafraîchissement de mémoire
Vincent Posté 1 Février 2005 Posté 1 Février 2005 personnellement, j'utilise un script php récupéré je ne sais plus trop où pour faire digerer a ma base de données des milliers de requetes SQL en provenance le plus souvent de feuilles saisies dans excel (vous savez en genealogie, on en stocke des infos )... et il fonctionne a merveille sous firefox et internet explorer (c'est deja pas mal non ... par contre, il est bloqué après l'upload puisqu'on le teste en php... : <?phpfunction date_mysql($date_saisie){ //division de la date par rapport au / ou - list ($jour , $mois , $an) = split("[-./]",$date_saisie); //inverse la date if (strlen($mois)==1) $mois = "0".$mois; if (strlen($jour)==1) $jour = "0".$jour; return($an."-".$mois."-".$jour);} $bouton = @$_POST['bouton'];if(!empty($bouton)){ $fichier = $_FILES['fichier']['name']; $size = $_FILES['fichier']['size']; $tmp = $_FILES['fichier']['tmp_name']; $type = $_FILES['fichier']['type']; $error = $_FILES['fichier']['error']; $max = 1000000; if(isset($fichier)) { if($size <= $max) { //information sur le fichier echo 'Nom d\'origine =>'.$fichier.'<br />'; echo 'Taille =>'.$size.'<br />'; echo 'Nom sur le serveur =>'.$tmp.'<br />'; echo 'Type de fichier =>'.$type.'<br />'; echo 'Code erreur =>'.$error.'<br />'; // traitement a faire [...] } else { echo 'Le fichier est trop volumineux'; } } else { echo 'aucun fichier envoyé'; }}?><form enctype="multipart/form-data" action="moulinette.php" method="post"><input name="fichier" type="file"><input type="submit" value="send" name="bouton"></form>
cyrilg38 Posté 1 Février 2005 Posté 1 Février 2005 c'est une bonne question posée là. Je cherche moi-même à écrire un script d'upload de fichiers en PHP mais je suis débutant. Je vais suivre ce sujet avec attention
Anonymus Posté 3 Février 2005 Posté 3 Février 2005 Pour le code que tu proposes : if(isset($fichier)) { Tu devrais tester la valeur de $_POST['fichier'] avant d'allouer les autres variables. C'est inutile de leur allouer des valeurs que tu 'sais' fausses par la suite D'ailleurs, tu devrais tester la présence du fichier, puis son poids, et virer le fichier si celui ci est trop gros, avant de commencer quoi que ce soit.
Vincent Posté 3 Février 2005 Posté 3 Février 2005 le fichier est viré automatiquement si je ne demande pas par la suite de le recopier quelque part (ce qui est le cas si le fichier est trop volumineux): The file will be deleted from the temporary directory at the end of the request if it has not been moved away or renamed. donc a la fin de ma transaction web, *pouf* plus de fichier ! pour garder un fichier sur le serveur il faut utiliser la fonction : move_uploaded_file par contre pour l'inutilité d'allouer les variables, je suis d'accord
abl Posté 3 Février 2005 Posté 3 Février 2005 salut voila un tuto de script d'upload http://www.siteduzero.com/vostutos/?s=viewtuto&tutoid=51 ++ -abL^
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant