Move_uploaded_file ??? comment uploader une image

jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005 - 30 mai 2005 à 14:54
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005 - 31 mai 2005 à 16:21
Bonjour
je suis débutant
jutilise easyphp 1.6

je narrive pas a uploader limage qd je ve creer une nouvelle fiche client :(
qd je clik sur parcourrir je selectionne une image , mais un message prédéfinis que jai tapé ds mon code saffiche....

Je comprends rien , je c pas quoi faire, jai deja essayé differentes choses mais voila...sa marche pas.

aidez moi svp, jai pas envie d'abandonner tt de suite.
QU'est ce qui ne va pa ?

<?php
include("inc_connect.php");
$conn= connexion();
if ($conn!=0)
{
echo"

<center>RESULTAT</center>
";
$taille=filesize($fichier);
if ($fichier!='none') //verifie : l'utilisateur a bien envoyer un fichier
{
if($taille<200000) //limite la taille du doc
{
$nom_vrai=$HTTP_POST_FILES['fichier']['name']; //nom d'origine du fichier
$point=strrpos($nom_vrai,"."); //recupere la position du dernier point verifi l'existance de l'extention
if($point)//il y a une extention
{
echo"
<center>Nom du fichier téléchargé : ".$nom_vrai."</center
";
}
else //pas d'extention donc : on crée l'extention
{
$extention ='.gif';
$nom_vrai=$nom_vrai.$extention;
echo"

<center>Aucune extention reconnue!";
echo"
Modification sur fichier : enregistrement du fichier au format gif.";
echo"

Il est possible que la lecture du fichier soit impossible</center>";
}

//adr = http:serveurlutece/formapro/photos/

$nouveau_nom="[file://photos//%22.$num.$nom_vrai \\photos\".$num.$nom_vrai]; //concaténation
chdir("C:\Program Files\EasyPHP\www\intranet2\formapro");

//$repertoire=chdir("http://serveurlutece/formapro/photos/"); //change le répertoire courant
if(file_exists($nouveau_nom)) //nouveau_nom
{

echo"

<center>Fichier déjà existant ! ";
}
if(@move_uploaded_file($fichier,$nouveau_nom)) //move_uploaded (nom du fichier tempo, fichier destinataire) : copie/transfert
{
$req="UPDATE intervenant set photo_prof='$nouveau_nom' where num_prof=$num";
$res=mysql_db_query("formapro",$req,$conn);
if ($res==0)
{
echo"

<center>Echec Enregistrement du fichier !
";
echo"

<center>Réessayer</center>
";
}
else
{
echo"

<center>Transfert du fichier réussi !";
echo"

Nom : ".$nouveau_nom;
echo"

Taille : ".$taille."</center>";
echo"

<center>Visionner la fiche maintenant</center>
";
}
}
else
{
echo"

<center>Le fichier n'a pu être copié</center>
";
echo"

<center>réessayer</center>";
}
}
else
{
echo"

<center>Ce fichier est trop grand. Son envoi est refusé</center>
";
echo"

Visionner la fiche maintenant";
}
}
else
{
echo"

<center>Vous n'avez selectionné aucun fichier";
echo"

Réessayer</center>";
}
}
else
{
echo"

Erreur à la connexion
";
}


?>

25 réponses

jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 14:56
jai oublié de préciser le message d'erreur :
"Le fichier n'a pu être copié"
apparemment limage ne se copie pas ds le dossier C:\Program Files\EasyPHP\www\intranet2\formapro que jai indiqué....
aidez moi :(
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2005 à 15:02
Hello,



et ca correspond a quel if() ce else la...? Parce que c'est un peu le bordel ton code lol.
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 15:32
desolé c le copier-coller qui fait ça
il correspond a ce if là :

if(@move_uploaded_file($fichier,$nouveau_nom)) //move_uploaded (nom du fichier tempo, fichier destinataire) : copie/transfert


voila ^^
:(
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2005 à 15:34
Si tu virais le @ ce serait une bonne idee...tu verrais quelle erreur tu as.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 15:56
jai enlevé le @ comme tu mas di . (dailleurs je c pas a quoi ça sert, si tu pe me dire au passage.....)


Dans parcourir jai choisi limage : !18.jpg à uploader


et jai 2 messages d'erreur :


Warning: Unable to create '\photos\158!18.jpg': No such file or directory in c:\program files\easyphp\www\intranet2\formapro\upfile.php on line 46

Warning: Unable to move 'C:\Program Files\EasyPHP\tmp\php4B.tmp' to '\photos\158!18.jpg' in c:\program files\easyphp\www\intranet2\formapro\upfile.php on line 46


<CENTER>Le fichier n'a pu être copié</CENTER>

la ligne 46 correspond a cette ligne :
if(move_uploaded_file($fichier,$nouveau_nom))




<CENTER> </CENTER>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2005 à 16:15
Salut,



tu as un dossier qui n'existe pas, ou la variable $fichier ne contient
pas le nom du fichier correct. tu peux utiliser
$_FILES['fichier_source']['tmp_name'] à la place ou "fichier_source"
correspond au nom de ton champ de type "file" dans ton formulaire.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2005 à 16:25
Le @ devant une fonction sert a ce que php ne signale pas d'erreur quand il y en a une, et continue son execution comme si de rien n'etait. Une TRES mauvaise habitude a prendre...c'est carrement a eviter.

D'ou vient le 158 alors, devant le nom de ton image...?
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 16:33
----> le158 : $num est le numéro de la personne enregistrée. c pr savoir quel photo va avec quel numero

-----> sinon je vois quel dossier il manque car ce code est généré dans upfile.php qui est situé ds le dossier program files\easyphp\www\intranet2\formapro\upfile.php
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2005 à 16:35
Justement quand tu gères tes erreurs autant mettre un @ devant, car ça
évite d'afficher l'erreur de PHP, mais seulement ton erreur

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 16:41
la variable $fichier doit bien contenir le nom du fichier si jai mis ça :

echo"

Choisissez le fichier à envoyer : </center>";
echo"
<center></center>";
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2005 à 16:58
Non non ça ne fonctionne pas ça tu ne peux pas attribuer de valeur au champ de type file

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 17:15
bon daccors alors, mais quest ce que je dois mettre dans "value" alors ????
je me suis pe etre embarqué ds quelque chose de difficle pour moi,...

je c pas j arriverai c dommage
mais sa minteresse...
le plus dur c que je travaille sur le code de qq1 qui ne code pas du tout comme moi....en tout sa a lair detre un pro
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 17:28
donc jai mis ça ds mon formulaire : (si g bien compris)

echo"

Choisissez le fichier à envoyer : </center>";
echo"
<center></center>";

// jai enlever le dollar a fichier, puisk on pe pa utiliser de variable tu ma di

et dans upfile.php faut mettre ---->

$_FILES['fichier]['tmp_name']


$req= "UPDATE intervenant set photo_prof='$nouveau_nom' where num_prof=$num";
$res=mysql_db_query("formapro",$req,$conn);
if ($res==0)
{
echo"

<center> Echec Enregistrement du fichier !
";
echo"

<center>Réessayer</center>
";
}
...
...
...
...


mais le probleme(com tu pe le voir au debut de ma page, mes premieres lignes de code utilisai la variable $fichier :
exemple :
$taille =filesize($fichier);
if ($fichier!='none') //verifie : l'utilisateur a bien envoyer un fichier
{
if($taille<200000) //limite la taille du doc

la je suis obligé de laisser une variable. Je peux pas laisser juste "fichier" sans le $

donc comment faire ??

:'(
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 17:32
je dois mettre sa :
if($_FILES['fichier_source']['tmp_name'])//move_uploaded (nom du fichier tempo, fichier destinataire) : copie/transfert
{

a la place de sa :

if(move_uploaded_file($fichier,$nouveau_nom)) //move_uploaded (nom du fichier tempo, fichier destinataire) : copie/transfert
{

c bien sa ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2005 à 17:36
=> Antho, mouais...mais si tu geres bien les erreurs possibles...tu n'affiches pas non plus d'erreur php, eventuellement les tiennes, et sans non plus interrompre le script.
Il est LARGEMENT preferable d'ecrire :
if (is_array ($tableau)) {
array_pop ($tableau);
echo '$tableau a ete poppe';
}
else
echo 'Erreur, $tableau n\'est pas un tableau';

plutot que

if (@array_pop (tableau))
echo '$tableau a ete poppe';
else
echo 'Erreur, mais laquelle...??';

C'est un exemple succint et incomplet, hein...mais bon. Ce que je veux dire c'est qu'il vaut mieux gerer les erreurs autrement. Si on gere bien, on aura pas d'erreur php...de toutes facons. Donc le @ devient inutile.


jesbond =>je ne sais pas ou tu as mis ton 158, je n'ai pas regarde, mais il te manque juste un \ entre le dossier utilisateur (donc, si j'ai bien compris) et le nom du fichier, c'est tout...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2005 à 17:51
Tu ne peux pas mettre de valeur, donc tu ne peux pas uploader automatiquement si c'est ça que tu cherches à faire.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2005 à 17:53
Moi je ne comprends pas ce qu'il cherche a faire lol...de toutes facons.

Ton erreur du debut est simple :

Warning: Unable to create '\photos\158!18.jpg': No such file or
directory in c:\program files\easyphp\www\intranet2\formapro\upfile.php
on line 46



Warning: Unable to move 'C:\Program
Files\EasyPHP\tmp\php4B.tmp' to '\photos\158!18.jpg' in c:\program
files\easyphp\www\intranet2\formapro\upfile.php on line 46



tu as ce chemin :

C:\Program
Files\EasyPHP\tmp\php4B.tmp' to '\photos\158!18.jpg



et tu devrais avoir ca :

C:\Program
Files\EasyPHP\tmp\php4B.tmp' to '\photos\158\!18.jpg
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
31 mai 2005 à 15:06
Mais non c pa ça le problème :( :( :( alors la si vous y arrivez pas , je peux laisser tomber lol......

meme en rajoutant le \ sa change rien :

Nom du fichier téléchargé : !5.jpg</CENTER< b>

Warning: Unable to create '\photos\160\!5.jpg': No such file or directory in c:\program files\easyphp\www\intranet2\formapro\upfile.php on line 46

Warning: Unable to move 'C:\Program Files\EasyPHP\tmp\phpD.tmp' to '\photos\160\!5.jpg' in c:\program files\easyphp\www\intranet2\formapro\upfile.php on line 46


<CENTER>Le fichier n'a pu être copié</CENTER>
<CENTER>
</CENTER>
<CENTER>

</CENTER>

bah ANTHOMICRO coment je dois my prendre alors avec mon code pour uploader ?? :(
aidez moi svvpp !!!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 mai 2005 à 15:12
Il sont crees tes repertoires...?
0
jesbond Messages postés 18 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 1 juin 2005
31 mai 2005 à 15:21
bah jai créé ce repertoire :
'C:\Program Files\EasyPHP\tmp\phpD.tmp'

mais ds le message derreur il change tt le temps:
'C:\Program Files\EasyPHP\tmp\php11.tmp'
0
Rejoignez-nous