Page 1 sur 1

Respect de la taille d'une image au téléchargement

Posté : 31 mai 2006, 16:50
par aghianna
Bonjour,

Je suis grande débutante mais ça vous allez vous en apercevoir. Je "dynamise" un site et je dois faire une sorte d'album photo.

Les images sont insérées via un formulaire et un fichier php permet de les récupérer.

Le premier problème que je rencontre (allons y par étape !) concerne la taille des images. En effet, il me faut d'abord une petite photo (obligatoire) (ex:100x70 ) puis la même mais plus grande (ex:400x240 -14Ko). Je les télécharge chacune avec leur taille respective.

Je dois préciser qu'au départ je n'avais pas indiqué de taille, le téléchargement fonctionnait bien pour les 2 photos, mais elles se retrouvaient la même taille après le téléchargement alors qu'elles avaient chacune une taille différente avant le téléchargement.

Je me suis donc dis qu'il fallait préciser une taille avant le téléchargement, pour ce faire, je précise la taille maxi dans la balise <input type="file"> du formulaire html :

Code : Tout sélectionner

<html> <form> <table> <tr> <td>Petite photo</td> <td> <input type="file" name="photo" id="photo" value=""> <input type="hidden" name="MAX_FILE_SIZE" value="12000"></td> </tr> <tr> <td>Grande photo </td> <td><input type="file" name="photo2" id="photo2" value=""> <input type="hidden" name="MAX_FILE_SIZE" value="30000"></td> </tr> <tr> <td><input type="submit" name="Submit" value="Valider"></td> </table> </form> </html>
Puis dans le code php :
<?php

$user="xxx";
$bdd="xxx";
$password="";
$host="xxx";

mysql_connect($host,$user,$password) or die("erreur dans la connexion");
mysql_select_db($bdd) or die("erreur base de données");
//récupération des données
$id_modele=$_POST['modele'];
$titre=$_POST['titre'];
$texte=$_POST['texte'];
//les 2 photos
$temp_photo=$_FILES["photo"]["tmp_name"];
$nom_photo=$_FILES["photo"]["name"];
$photo_size=$_FILES["photo"]["size"];
$chemin="../photo/";
$photo=$photo_size.$chemin.$nom_photo;
$temp_photo=$_FILES["photo2"]["tmp_name"];
$nom_photo2=$_FILES["photo2"]["name"];
$photo_size2=$_FILES["photo2"]["size"];
$chemin="../photo/";
$photo2=$photo_size2.$chemin.$nom_photo2;

$query="INSERT INTO sensicollec (titre, texte, pte_photo, gde_photo, id_modele) VALUES ('$titre', '$texte',  '$photo', '$photo2','$id_modele')";
$result=mysql_query($query) or die($query."--".mysql_errno()."---".mysql_error());


if(copy($temp_photo,$photo)) {
echo "Chargement de la premi&egrave;re photo r&eacute;ussi<br />";
}
else {
echo "<br />Echec du chargement de la premi&egrave;re photo";
}
if(copy($temp_photo,$photo2)) {
echo "Chargement de la deuxi&egrave;me photo r&eacute;ussi<br />";
}
else {
echo "<br />Echec du chargement de la deuxi&egrave;me photo";
}

mysql_close();
?> 
Depuis que j'ai mis la variable : $photo_size=$_FILES["photo"]["size"], et $photo=$photo_size.$chemin.$nom_photo, le téléchargement ne se fait plus, je suppose que l'erreur est par là, mais je ne pas où....

Voila donc mon problème. Merci[/b]

Posté : 31 mai 2006, 17:20
par Vorkosigan
Deja une premiere remarque, tu n'as pas besoin de demander d'uploader 2 images. En effet il existe des fonctions PHP te permettant de creer "a la volee" des versions reduites de tes images.
Puis une seconde remarque, je te conseille aussi de verifier le format de l'image (JPG, BMP...).

Maintenant concernant ton erreur, ou a t'elle lieu exactement ?
- que vaut ?
$_FILES["photo"]["size"]
- Est-ce que cette variable est bien positionnee ?

Respect de la taille d'une image au téléchargement

Posté : 31 mai 2006, 17:48
par aghianna
Bonjour,
Je m'explique :

En fait, il s'agit d'un site qui présente des modèles de chaussure et l'artisan souhaite montrer toutes les déclinaisons de ses modèles.

Alors il y a une page de modèle standard , lorsque l'on clique sur une photo on arrive sur une page qui affiche toutes les déclinaisons du modèle( couleur différente ou porté d'où la différence de taille même si elle n'est pas énorme).

C'est donc la raison pour laquelle je veux insérer 2 photos.

Je fais ça avec un formulaire et ça marche.

Mais le problème est que le téléchargement ne respecte pas la taille des photos, en vérifiant sur le serveur on s'aperçoit que les photos se retrouvent avec exactement la même taille alors qu'au départ elles sont différentes.

On m'a dit qu'il fallait définir une taille avant le téléchargement d'où les scripts que j'ai cité dans mon message précédent.

Mais je ne sais pas où exactement ni comment;

Je suis débutante et je patauge !!! :oops:
Merci

Re: Respect de la taille d'une image au téléchargement

Posté : 31 mai 2006, 18:08
par Vorkosigan
Mais le problème est que le téléchargement ne respecte pas la taille des photos, en vérifiant sur le serveur on s'aperçoit que les photos se retrouvent avec exactement la même taille alors qu'au départ elles sont différentes.
??? Tu veux dire que tu te retrouves 2 fois avec la meme image ?
Pourrais tu rajouter des traces pour nous permettre de connaitre ce que valent tes variables $photo et $photo2 par exemple ?
On m'a dit qu'il fallait définir une taille avant le téléchargement d'où les scripts que j'ai cité dans mon message précédent.
Mais je ne sais pas où exactement ni comment;
Oui, a ce sujet je te conseille la lecture d'articles comme :
http://phpcodeur.net/articles/php/upload

A noter que dans ton formulaire HTML, tu ne peux definir qu'un seul champ MAX_FILE_SIZE.
D'ailleurs, si tu veux faire un controle de taille de fichier, je te conseille fortement de le faire cote PHP.

Posté : 31 mai 2006, 19:49
par aghianna
Je viens de vérifier et le problème est finalement "comment télécharger 2 photos de taille différente via un même formulaire.

Merci beaucoup de ton aide

je vais essayer autre chose