Problème de déplacement d'un fichier uploadé

Problème de déplacement d'un fichier uploadé - PHP - Programmation

Marsh Posté le 07-06-2007 à 10:35:56    

Bonjour,

 

je suis en train de coder un forum et  j'en suis actuellement à l'upload d'un avatar.La démarche est simple : je fais des vérifications d'usage (taille, poids, etc.), je renomme le fichier uploadé par l'ID du membre qui uploade de manière à ne pas avoir un même nom puis je déplace dans le bon dossier. Seul problème, j'ai ce message d'erreur en double :

 


Warning: move_uploaded_file(C:/Program Files/~Internet/EasyPHP1-8\tmp\php58A.tmp): failed to open stream: No such file or directory in c:\program files\~internet\easyphp1-8\www\forum\confirmation.php on line 210

 

J'ai donc fais des recherches pour en trouver la cause : ce n'est pas le CHmod vu que je suis sous Windows avec EasyPHP, le chemin vers le fichier est normalement correcte et ça me modfifie correctement le nom.

 

Voilà le code, je ne met que la partie traitement (scission du nom du fichier, renommage et déplacement.

 
Code :
  1. if(count($erreurs) == 0)
  2.                  {
  3.                        $nomdufichier = strtolower($_FILES['upload_avatar']['name']);
  4.                        $div_fichier = explode ('.', $nomdufichier);
  5.                        $nom_temp = $div_fichier[0];
  6.                        $extension = $div_fichier[1];
  7.                        $membre_id = $affichage['membre_id'];
  8.                        $nom_fichier_final = str_replace($nom_temp, $membre_id, $nom_temp);
  9.                        $nomdufichier = $nom_fichier_final. '.' .$extension;
  10.                                        
  11.            if ($affichage['membre_avatar'] != '' AND is_file('./template/images/avatars/'.$affichage['membre_avatar'].''))
  12.                {
  13.                  unlink('./template/images/avatars/'.$affichage['membre_avatar'].''); //On supprime fichier
  14.                                                
  15.                   $cheminversfchier = './template/images/avatars/'.$nomdufichier.'';
  16.                   $move_fichier = move_uploaded_file($_FILES['upload_avatar']['tmp_name'], $cheminversfichier);
  17.                   $requete_ajout_fichier = mysql_query('UPDATE forum_membres SET membre_avatar ="' .mysql_real_escape_string($nomdufichier). '" WHERE membre_id ="' .mysql_escape_string($_SESSION['id']).'"') or die (mysql_error());
  18.                }
  19.           else
  20.                {
  21.                    $cheminversfchier = './template/images/avatars/'.$nomdufichier.'';
  22.                    $deplace_fichier = move_uploaded_file($_FILES['upload_avatar']['tmp_name'], $cheminversfichier);
  23.                    $requete_ajout_fichier = mysql_query('UPDATE forum_membres SET membre_avatar ="' .mysql_real_escape_string($nomdufichier). '" WHERE membre_id ="' .mysql_escape_string($_SESSION['id']).'"') or die (mysql_error());
  24.                }
  25.                                          
  26.           if($deplace_fichier AND $requete_ajout_fichier)
  27.                {
  28.                    echo UPLOAD_OK;
  29.                }
  30.            else
  31.                {
  32.                   echo ERREUR_TRANSFERT_UPLOAD_AVATAR;
  33.                }
  34.                }                          
  35.           else
  36.                {
  37.                   echo '<div class="erreur_forum"><img src="./template/images/cancel.png"/> Erreur : l\'upload a &eacute;chou&eacute; pour les raisons suivantes :<br/>';
  38.                   foreach ($erreurs as $erreur) echo $erreur, '<br/>';
  39.                    echo'<br/><a href="upload.php?type=avatar" title="Retourner &agrave; la page d\'upload d\'avatar">Retour &agrave; la page d\'upload d\'un avatar</a>.</div>';
  40.  
  41.                  }
 

Merci d'avance ;)


Message édité par Tristou le 07-06-2007 à 10:43:53

---------------
"About your cat Mr. Schrödinger : I have good news and bad news"
Reply

Marsh Posté le 07-06-2007 à 10:35:56   

Reply

Marsh Posté le 07-06-2007 à 10:43:43    

Par hasard, cette partie de ton code, elle serait pas exécuté quelque part dans une boucle?

Reply

Marsh Posté le 07-06-2007 à 10:45:28    

Par boucle tu entends par exemple while ou bien un switch ?


---------------
"About your cat Mr. Schrödinger : I have good news and bad news"
Reply

Marsh Posté le 07-06-2007 à 10:48:05    

Un switch n'est pas une boucle.
Un while, un for, un foreach ... en sont.
 
PS : Si t'as des switch, n'oublis pas de mettre tous les "break" nécessaire. C'est le genre d'oublis qui peut faire tourner en bourique pendant un moment. ;)

Reply

Marsh Posté le 07-06-2007 à 10:56:05    

Alors euuuh non, le bout de code plus haut n'est pas dans une boucle, la seule boucle, c'est le foreach pour énumérer les erreurs en cas de fichier trop grand, trop grand avec un mauvais type ;)
 
J'ai vérifié, il ne manque pas de break; sinon il y aurait peut-être une erreur ou un autre comportement anormal non ?
 


---------------
"About your cat Mr. Schrödinger : I have good news and bad news"
Reply

Marsh Posté le 07-06-2007 à 11:18:44    

Corrigé, ça marche nickel, un bête nom de variable pas ortographié pareil :o


---------------
"About your cat Mr. Schrödinger : I have good news and bad news"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed