equids Posté 21 Octobre 2007 Posté 21 Octobre 2007 Bonjour tout le monde, j'ai un problème php que je n'arrive pas à résoudre : Lors d'un upload d'image par formulaire, est-t-il possible, si l'image envoyée est trop lourde, de la réduire, puis de l'enregistrer sans avoir à enregistrer l'image originale ? Je n'arrive à créer et enregistrer une image réduite que si j'enregistre au préalable l'originale. Je n'arrive pas à avoir accès à l'image originale stockée en fichier temporaire lors de l'upload pour pouvoir la réduire et l'enregistrer. Merci d'avance de votre aide
birdyman Posté 21 Octobre 2007 Posté 21 Octobre 2007 Salut, Il faut que tu test $_FILES et si supérieur à ta valeur limite, redimensionnes le fichier dont le nom temporaire est $_FILES[tmp_name] et qui est dans le répertoire d'upload par défaut définit par la directive de configuration : upload_tmp_dir @++
destroyedlolo Posté 22 Octobre 2007 Posté 22 Octobre 2007 Si l'image est plus grosse que la limite que tu as indiques, elle n'est pas creer en fichier temporaire donc il n'est pas possible de la recuperer C'est d'autant plus stupide que le fichier semble bien etre transferer au vu de l'activite reseau que j'ai eu lorsque j'ai fait des testes ...
captain_torche Posté 22 Octobre 2007 Posté 22 Octobre 2007 Dans ce cas, il faut créer un champ caché avec comme nom "MAX FILE SIZE" : <input type="hidden" name ="MAX FILE SIZE" value="2000000">
birdyman Posté 22 Octobre 2007 Posté 22 Octobre 2007 (modifié) Si le but est de réduire les images dont le poids est trop important, il ne faut pas mettre de "MAX FILE SIZE" sinon l'image ne sera pas enregistrée . MAX FILE SIZE s'utilise si tu veux interdire l'envoi de fichier trop gros, hors ici equids veut les redimensionner avant de les enregistrer. Il faut par contre dans ton fichier de traitement du formulaire tester la taille du fichier transféré et -soit l'enregistrer directement si la taille est inférieur à ta limite -soit la redimensionner et l'enregistrer. Attention tout de même à la taille limite d'envoi configuré sur le serveur. Modifié 22 Octobre 2007 par birdyman
captain_torche Posté 22 Octobre 2007 Posté 22 Octobre 2007 Ce que je voulais dire, c'est qu'ajouter un champ "MAX FILE SIZE" en adéquation avec la valeur maximale configurée côté serveur, permet de ne pas uploader de fichier trop gros qui ne pourrait pas être traité par la suite.
equids Posté 26 Octobre 2007 Auteur Posté 26 Octobre 2007 Merci pour tous vos conseils utiles, j'ai trouvé comment faire avec le fichier temporaire. Et c'est vrai qu'il est inutile de charger un fichier qui dépasse d'emblée les capacités que la max upload accepte. A ce sujet est il dangereux au niveau de la sécurité du serveur de monter de 2Mo (par défaut) à 5Mo ?
birdyman Posté 26 Octobre 2007 Posté 26 Octobre 2007 Au niveau sécurité cela ne change rien, par contre au niveau performances tout dépend du nombre d'uploads que tu as par jour si c'est de l'ordre quelques uns par jour ou si c'est plusieurs centaines.
equids Posté 28 Octobre 2007 Auteur Posté 28 Octobre 2007 Au niveau sécurité cela ne change rien, par contre au niveau performances tout dépend du nombre d'uploads que tu as par jour si c'est de l'ordre quelques uns par jour ou si c'est plusieurs centaines. C'est au niveau de la bande passante que ça peut coincer après ?
destroyedlolo Posté 29 Octobre 2007 Posté 29 Octobre 2007 C'est au niveau de la bande passante que ça peut coincer après ? A moins que tu es un nombre gigantesque d'utilisateurs concurrent, et qu'ils telechargent tous en meme temps, ca m'etonnerai un peu. Dans mon cas, je transforme les images telechargees a la volee avec GD (retaillage, mise d'un watermark, ...) avant de les publier, et vu le peu de ram de mon serveur, ca evite que ca swap ... surtout que je les retaille en 640/480. De plus, beaucoup de mes utilisateurs ont des connections lentes, donc ca evitent qu'ils perdent leur temps pour rien.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant