Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/12/2007, 11h00   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 30
Points : 10
Points : 10
Par défaut Php envoi de photos

Bonjour,

dans ma partie administration, je veux envoyer des photos. Pour cela je voudrais les redimenssionner avant de les uploader. J'arrive à faire d'un coté le redimenssionnement et l'upload de l'autre. Mais je n'arrive pas a combiner les 2. Voici mon code, si quelqu'un pouvait me dire d'ou pourrait venir le problème. Pour moi le problème vient de l'utilisation du imagejpeg($image_redimenssionne, $nom_destination); et du move_uploaded_file($nom_fichier, $nom_destination); je n'arrive peut être pas a bien combiner les 2. Ou alors il faudrait que je puisse me servir seulement du move_upload_file mais pour cela il faudrait que la photo redimenssionnée soit dans le dossier temporaire $_FILES['photo']['name'].
Merci d'avance^^


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<form action="#" method="POST" enctype="multipart/form-data"> 
<input type="file" name="photo" size="40"> 
<input type="submit" value="envoyer"> 
</form> 
 
<?php 
$photo=$_FILES['photo']['name']; //nom de la photo 
$nom_fichier=$_FILES['photo']['tmp_name']; //nom du fichier dans le répertoire temporaire 
list($largeur, $hauteur) = getimagesize($nom_fichier); 
$nouvelle_largeur = 548; 
$nouvelle_hauteur = 411; 
 
if($largeur>=548 && $hauteur>=411){ 
// si c'est le cas on redimenssionne 
$image_redimenssionne = imagecreatetruecolor($nouvelle_largeur, $nouvelle_hauteur); 
$ext=substr($photo, strpos($photo,".")+1); 
switch($ext){ 
case "JPG"; 
$image = imagecreatefromjpeg($nom_fichier); 
break; 
case "gif"; 
$image = imagecreatefromgif($nom_fichier); 
break; 
case "png"; 
$image = imagecreatefrompng($nom_fichier); 
break; 
default: 
echo "Type de fichier non supporté, veuillez changer le format en JPG, GIF ou PNG"; 
} 
 
imagecopyresampled($image_redimenssionne, $image, 0, 0, 0, 0, $nouvelle_largeur, $nouvelle_hauteur, $largeur, $hauteur); 
 
//et on enregistre 
$nom_destination="../Photos/$photo"; //nom et adresse de destination 
imagejpeg($image_redimenssionne, $nom_destination); 
 
imagedestroy($image_redimenssionne); 
imagedestroy($image); 
}else{ 
$nom_destination="../Photos/$photo"; //nom et adresse de destination 
move_uploaded_file($nom_fichier, $nom_destination); //envoie du fichier 
} 
?>
neimad31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 15h36   #2
Invité de passage
 
Inscription : novembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 9
Points : 3
Points : 3
Modifie ton code au tout début : size="40" tu as oublié une guillemet.
Tu as une accolade } en trop à la fin.

La structure c'est : if { instruction } else { instruction }

Et remplace

Code :
1
2
 
$nom_destination="../Photos/$photo"; //nom et adresse de destination
par :

Code :
1
2
 
$nom_destination="Photos/".$photo; //nom et adresse de destination
Normalement ça devrait marcher
angebleu1759 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 15h56   #3
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 30
Points : 10
Points : 10
Oups c'est en supprimant des parties inutiles qui m'ont fait commete l'erreur du size="40" et de l'accolade en trop. Ensuite pour $nom_destination les 2 façons se valent.
En fait j'ai oublié de préciser que mon code marche en local avec EasyPhp mais c'est sur mon serveur free que ça ne marche pas. Normalement ça devrait marcher vu qu'un photo redimensionnée en 548x411 fait une centaine de kO (free limite a 2Mo). Donc je pensais que tout simplement mon
imagejpeg($image_redimenssionne, $nom_destination); ne marche pas sur le serveur free dans mon cas. Merci pour ton aide ^^ et je rectifie les erreurs que tu m'a dit.
neimad31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 16h02   #4
Invité de passage
 
Inscription : novembre 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 9
Points : 3
Points : 3
De rien

Ca doit être un probléme dù a Free car de mon coté le code marche parfaitement (sur un serveur OVH).
angebleu1759 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 16h09   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 30
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 30
Points : 10
Points : 10
ok merci beaucoup j'abandonne alors lol vive free
neimad31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h16.


 
 
 
 
Partenaires

Hébergement Web