Insérer une image après avoir controlé taille et poids
23 messages
• Page 1 sur 2 • 1, 2
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Insérer une image après avoir controlé taille et poids
Bonjour,
Je m'échine à essayer de permettre l'upload d'une image seulement si sa taille et son poids respectent les valeurs prévues.
Pour l'instant, j'en suis à controler le poids.
Voilà mon code sur la page du formulaire :
Et le code sur la page de réception :
Bon alors, si le fichier fait moins de 30ko, il est uploadé, je le retrouve dans le bon dossier.
Si le fichier fait plus de 30ko, alors il n'est pas uploadé, mais l'instruction du else n'est pas effectuée et le message echo'fichier trop gros' ne s'affiche pas.
J'ai essayé de modifier la valeur "MAX_FILE_SIZE" du input hidden pour être certain qu'elle soit supérieure aux fichiers de test, eux-mêmes supérieur à la valeur limite des conditions if, mais non, rien à faire, le echo n'est pas affiché.
Qui peut m'aider ?
Je m'échine à essayer de permettre l'upload d'une image seulement si sa taille et son poids respectent les valeurs prévues.
Pour l'instant, j'en suis à controler le poids.
Voilà mon code sur la page du formulaire :
- Code: Tout sélectionner
<form method="post" action="creation-site.php" enctype="multipart/form-data">
8/9 ) Votre photo :</b> ajoutez une photo pour renforcer votre présentation (format 130px*130px et 30ko maximum).
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="photo" value="parcourir">
<input type="hidden" name="choix" value="2">
<input type="hidden" name="acceptation" value="ok">
<input type="submit" name="pro-gratuit-8" value="envoyer">
</form>
Et le code sur la page de réception :
- Code: Tout sélectionner
//on test si il y a le fichier photo
if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
//on test le poids
if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
{
//si le poids est inférieur à 30ko, on l'insère
$chemin = 'visu/membres/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name']))
{
echo "Le fichier ".$_FILES['photo']['name'].
" a été téléchargé avec succès dans ".$chemin;
}
;}//ferme le test du poids
//si poids >30KO, message d'erreur
else
{
echo'fichier trop gros'
;}
;}//ferme le test si le fichier est présent
Bon alors, si le fichier fait moins de 30ko, il est uploadé, je le retrouve dans le bon dossier.
Si le fichier fait plus de 30ko, alors il n'est pas uploadé, mais l'instruction du else n'est pas effectuée et le message echo'fichier trop gros' ne s'affiche pas.
J'ai essayé de modifier la valeur "MAX_FILE_SIZE" du input hidden pour être certain qu'elle soit supérieure aux fichiers de test, eux-mêmes supérieur à la valeur limite des conditions if, mais non, rien à faire, le echo n'est pas affiché.
Qui peut m'aider ?
-

Hoho - WRInaute impliqué

- Messages: 515
- Inscription: 10 Jan 2006
Sa m'interesse aussi!!! Hop je reco.
Je cherche également un script d'upload d'images de la part des navigateurs et par la suite, de les afficher avec des pages de navigation < 1 | 2 | 3 | 4...>
Dis moi...ya moyen de controler les parametre de resolution de l'images aussi?
Je cherche également un script d'upload d'images de la part des navigateurs et par la suite, de les afficher avec des pages de navigation < 1 | 2 | 3 | 4...>
Dis moi...ya moyen de controler les parametre de resolution de l'images aussi?
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Merci pour le lien ACth. J'ai pas l'habitude de ces histoires de serveur et franchement, je pige pas lourd.
Là j'ai utilisé var_dump($_FILES); que j'ai écrit à la première ligne du code au-dessus.
ça me donne ça, mais je pige pas :
Upload d'une image faisant moins de 30ko, soit la limite autorisée :
Et voilà ce que ça m'affiche avec une image trop grosse :
Donc, comme j'ai dit, le problème pour l'instant c'est que je n'arrive pas à afficher le message d'erreur "image trop lourde" si l'image fait plus de 30KO.
Là j'ai utilisé var_dump($_FILES); que j'ai écrit à la première ligne du code au-dessus.
ça me donne ça, mais je pige pas :
Upload d'une image faisant moins de 30ko, soit la limite autorisée :
- Code: Tout sélectionner
array(1) { ["photo"]=> array(5) { ["name"]=> string(10) "LXXMMI.jpg"
["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14)
"/tmp/php2AhOJh" ["error"]=> int(0) ["size"]=> int(29212) } } Le
fichier LXXMMI.jpg a été téléchargé avec succès dans visu/membres/
Et voilà ce que ça m'affiche avec une image trop grosse :
- Code: Tout sélectionner
array(1) { ["photo"]=> array(5) { ["name"]=> string(51)
"chancelery__front__office__s1_.jpg" ["type"]=>
string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=>
Donc, comme j'ai dit, le problème pour l'instant c'est que je n'arrive pas à afficher le message d'erreur "image trop lourde" si l'image fait plus de 30KO.
- ACth
- WRInaute impliqué

- Messages: 795
- Inscription: 11 Nov 2006
Il suffit de faire le test sur $_FILES['userfile']['size'] et / ou en fonction du message d'erreur.
si size trop grand et / ou error -> afficher message
si size trop grand et / ou error -> afficher message
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Ok, j'avais mis une valeur trop faible pour MAX_FILE_SIZE dans le hidden.
Maintenant, il y a encore des problèmes :
- Vérifier les dimensions de l'images, pour qu'elles soient inférieures à 130*130px.
- Si l'image uploadée a un nom du genre "mon image.jpg", soit avec un espace, alors on ne la retrouve pas dans le dossier de destination.
- Je dois controler si l'image est gif ou un jpg (éventuellement png).
Maintenant, il y a encore des problèmes :
- Vérifier les dimensions de l'images, pour qu'elles soient inférieures à 130*130px.
- Si l'image uploadée a un nom du genre "mon image.jpg", soit avec un espace, alors on ne la retrouve pas dans le dossier de destination.
- Je dois controler si l'image est gif ou un jpg (éventuellement png).
- ACth
- WRInaute impliqué

- Messages: 795
- Inscription: 11 Nov 2006
Toujours dans la doc.. chapitre images..
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Et ça, qu'est-ce que ça vaut (trouvé sur le net) :
- Code: Tout sélectionner
if($img = imagecreatefromgif($uploadfile))
{
if((ImageSX($img) == 16) && (ImageSY($img) == 12))
{
ok
}
else
{
pas ok
}
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Taratata, me revoilà eh eh !
Alors j'ai presque réussi
(je sais c'est fastoche, mais bon)
Bon le problème, c'est que ça m'affiche ça :
Par contre avec ce code, je n'ai pas d'erreur à l'affichage. Mais il n'est pas valable car la condition sur les dimensions et le type mime n'est pas prévue, seul l'affiche est effectué :
Alors j'ai presque réussi
- Code: Tout sélectionner
//on test si il y a le fichier photo
if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
//on test le poids
if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
{//si le poids est inférieur à 30ko, on test les dimensions et le type du fichier
$chemin = 'visu/membres/';
$chemin2=$chemin.$_FILES['photo']['name'];
list($width, $height, $type, $attr) =getimagesize($_FILES['photo']['name']);
echo" $width - $height - $type <p> ";
$datas=getimagesize($_FILES['photo']['name']);
echo $datas['mime'];
//on va tester les dimensions et le format du fichier
if($width<130 AND $height<130 AND ($type=="image.gif" OR $type=="image.jpg"))
{
//on passe le fichier du répertoire temporaire au répertoire définitif
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name'])) {
echo "Le fichier ".$_FILES['photo']['name'].
" a été téléchargé avec succès dans ".$chemin;
echo'<p>'
;}//ferme if move_uploaded_file
;}//ferme le test des dimensions et du format
else { //si dimension ou format mauvais
echo'dimension ou format mauvais'
;}
;}//ferme le test du poids
else { //si poids >30KO, message d'erreur
echo'fichier trop gros'
;}
}//ferme le test si le fichier est présent
Bon le problème, c'est que ça m'affiche ça :
- Code: Tout sélectionner
Warning: getimagesize(bonne-taille-gif.gif) [function.getimagesize]: failed to open stream: No such file or directory in /home/site/www/photo-test.php on line 148
- -
Warning: getimagesize(bonne-taille-gif.gif) [function.getimagesize]: failed to open stream: No such file or directory in /home/site/www/photo-test.php on line 151
dimension ou format mauvais
Par contre avec ce code, je n'ai pas d'erreur à l'affichage. Mais il n'est pas valable car la condition sur les dimensions et le type mime n'est pas prévue, seul l'affiche est effectué :
- Code: Tout sélectionner
if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
//on test le poids
if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
{
//si le poids est inférieur à 30ko, on l'insère
$chemin = 'visu/membres/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name'])) {
echo "Le fichier ".$_FILES['photo']['name'].
" a été téléchargé avec succès dans ".$chemin;
echo'<p>';
list($width, $height, $type, $attr) =getimagesize("visu/membres/barre-test.gif");
echo" $width - $height - $type -$attr <p> ";
$chemin2=$chemin.$_FILES['photo']['name'];
$datas =getimagesize("$chemin2");
echo $datas[mime];
}
}//ferme le test du poids
else { //si poids >30KO, message d'erreur
echo'fichier trop gros'
;}
}//ferme le test si le fichier est présent
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Bonne question.
Ligne 148 (juste en dessous de $chemin dans le troisième if):
Ligne 151 :
Ligne 148 (juste en dessous de $chemin dans le troisième if):
- Code: Tout sélectionner
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name'])) {
Ligne 151 :
- Code: Tout sélectionner
$datas=getimagesize($_FILES['photo']['name']);
Dernière édition par Meeuuuhhh le Ven Jan 12, 2007 15:47, édité 1 fois.
23 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Echange lien page partenaire - Nutrition / Controle de poids
- Code de contrôle image (captcha)
- Calculer le poids d'une image en PHP
- Récuperer poids et dimensions d'une image
- Comment insérer une image
- poids de page, image ou pas comprises
- Insérer du texte autour d'une image
- taille des polices et poids des mots-clés
- Poids d'une image (alt) dans une balise H1 ??
- inserer une image dans le background de mon site
- Nouveautés sur les recherches de Google Images - 22-02-2009
- La terre vue par satellite : accord entre Google et Spot Image - 23-01-2007
- Tutoriel sur le sitemap Google pour les images - 12-04-2010
- Google indexe plus de 8 milliards de pages - 11-11-2004
- Ajouter un moteur de recherche d'images sur son site - 24-07-2007
- Idées d'optimisation du référencement des images - 19-09-2008
- Google change de favicon - 07-06-2008
- Google teste l'affichage de favicons dans des publicités AdSense - 26-05-2005
Consultez la description détaillée des produits ou services de Google suivants : Google Browser Size
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

