Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1697 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier, Move upload file Echec

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Upload de fichier, Move upload file Echec

n°1986095
bizounours
Posté le 20-04-2010 à 22:26:13  profilanswer
 

Bonjour à tous,
 
J'aurais besoin d'aide, malgré divers recherches, je n'arrive pas à trouver ma solution
Je bloque sur le traitement d'un formulaire avec des envois multiples de fichiers. :pfff:  
 
Mon formulaire envoyé, je reçois correctement mes variables allant de "fichier_1" à "fichier_x".  
 
 
Voila donc ce que j'ai fais pour <essayer> de traiter ce formulaire.

Code :
  1. for ($i=1; $i<10; $i++)
  2.  {
  3.  if ($type_resp==FILE)
  4.   {
  5.    $fichier="fichier_$i";
  6.    $namefichier = $_FILES["$fichier"]['name'];
  7.    $fichertemp = ($_FILES["$fichier"]['tmp_name']);
  8.    $taille = filesize($_FILES["$fichier"]['tmp_name']);
  9.    $extension = strrchr($namefichier, '.');
  10.    $dossier = '../lib/tmp/';
  11.    $taille_maxi = 10000000;
  12.    $extensions=array('.png', '.gif', '.jpg', '.jpeg', '.JPEG', '.JPG', '.GIF');
  13.    if (empty($namefichier))
  14.    {
  15. //si name fichier n'existe pas.. on affiche rien!  
  16.    }
  17.    else
  18.     {
  19.      $chemincomplet=$dossier . $namefichier;
  20.      $destination=$dossier . $namefichier;
  21.      // echo "$fichiertemp";
  22.      // echo "$chemincomplet<br>";
  23.      // echo " $extension<br>";
  24.      // echo " $taille<br>";
  25.      if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
  26.       {
  27.        $erreur = "<img src=../img/ko.gif> Le fichier recu ne porte pas l'extension attendue.<BR>
  28.          Extensions autorisée : png, gif, jpg ou jpeg<Br>
  29.          Extension du fichier envoyé : $extension";
  30.        echo $erreur;
  31.       }
  32.      if($taille>$taille_maxi)//on verifie si cela ne depasse pas la taille autorisé
  33.       {
  34.        $erreur = 'Le fichier est trop gros...<BR>
  35.        Taille maximun : $taille_maxi';
  36.        echo $erreur;
  37.       }
  38.      if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
  39.        //On formate le nom du fichier ici...
  40.        $fichier = strtr($namefichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  41.          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  42.        $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $namefichier);
  43.      if (move_uploaded_file("$fichiertemp", '../lib/tmp'))
  44.       {
  45.        echo "ok";
  46.       }
  47.      else
  48.       {
  49.        echo "echec";
  50.       }
  51.     }
  52.   }
  53. }


 
Tout semble se passer correctement, jusqu'au move_upload.. Je suis toujours en echec.
J'ai essayé en donnant le nom des chemins relatif directement, avec ou sans passer par variable, mais.. sans réussir.  
 
Voila, je m'excuses d'avance pour la lecture douloureuse de mon code.. je ne suis que novice en la matière .. soyez indulgent  :sarcastic:  
 
Merci par avance de toutes l'aide ou pistes que vous pourrez m'apporter.
 
 
 
 

mood
Publicité
Posté le 20-04-2010 à 22:26:13  profilanswer
 

n°1986098
bixibu
Ca ... c'est fait!
Posté le 20-04-2010 à 22:30:37  profilanswer
 

Quelle erreur s'affiche exactement ??

Code :
  1. ini_set("display_errors",1);
  2. error_reporting(E_ALL)


si aucune erreur ne s'affiche.

 

Sinon tes "fichiers_$1", tu peux les remplacer par un array ce serait moins crade quand même :

Code :
  1. <input type="file" name="files[]" />


et plus facile à itérer..

 

De  plus :

Code :
  1. $fichertemp = ($_FILES["$fichier"]['tmp_name']);


Les parenthèses là, elle te choquent pas ?


Message édité par bixibu le 20-04-2010 à 22:31:10

---------------
App Android - F1 x MotoGP - Agenda & Alertes
n°1986102
bizounours
Posté le 20-04-2010 à 22:37:25  profilanswer
 

Hello,
 
Merci pour ta rapidité.
Voici le résultat :  :pfff:  

Spoiler :


Notice: Undefined variable: fichiertemp in /quest/form/resp_1.php on line 82
ko
Notice: Undefined index: valide_1 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_2 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_2 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_2 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_2 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_3 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_3 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_3 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_3 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_4 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_4 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_4 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_4 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_5 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_5 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_5 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_5 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_6 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_6 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_6 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_6 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_7 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_7 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_7 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_7 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_8 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_8 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_8 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_8 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112
 
Notice: Use of undefined constant FILE - assumed 'FILE' in /quest/form/resp_1.php on line 36
 
Notice: Undefined index: fichier_9 in /quest/form/resp_1.php on line 39
 
Notice: Undefined index: fichier_9 in /quest/form/resp_1.php on line 40
 
Notice: Undefined index: fichier_9 in /quest/form/resp_1.php on line 41
 
Notice: Undefined index: valide_9 in /quest/form/resp_1.php on line 109
 
Notice: Use of undefined constant off - assumed 'off' in /quest/form/resp_1.php on line 112


Citation :


Sinon tes "fichiers_$1", tu peux les remplacer par un array ce serait moins crade quand même :
Code :
 
   1. <input type="file" name="files[]" />


Car je ne savais pas faire.  
Je vais tester cela, enfin demain. :jap:  
 

Citation :


 
Les parenthèses là, elle te choquent pas ?


Boh..  :ange:  je mélange souvent.. novice inside!

n°1986106
bixibu
Ca ... c'est fait!
Posté le 20-04-2010 à 22:39:41  profilanswer
 

Pas de soucis ;)

 

Pour les notices, sache que tu peux les planquer genre error_reporting(E_ALL ~ E_NOTICE). Mais je te conseil déjà de comprendre ces erreurs et de les corriger, ca ne peux être que positif ;)


Message édité par bixibu le 20-04-2010 à 22:40:18

---------------
App Android - F1 x MotoGP - Agenda & Alertes
n°1986112
bizounours
Posté le 20-04-2010 à 22:49:41  profilanswer
 

Merci.
Pour les notices, j'ai tapé cela :  

Code :
  1. ini_set("display_errors",1);
  2. error_reporting(E_ALL & ~E_NOTICE);


Je n'ai plus de notices effectivement.  Mais je n'arrive toujours pas à comprendre pourquoi mon fichier ne bouge pas.
 
Je suis en train de regarder pour mettre le tout dans un tableau comme tu as dis, mais .. ca ne semble pas aussi simple avec le script que j'utilise pour l'ajout des inputs.
 
Une bonne nuit me donnera peut être des pistes.
 
Merci encore! :)  
 
 

n°1986114
bixibu
Ca ... c'est fait!
Posté le 20-04-2010 à 22:52:38  profilanswer
 

Autre chose :
 

Code :
  1. if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload

il n'y a pas les accolades apres ce if, donc seul l'instruction directement apres fera partie du IF
 
bref, met des echo partout pour voir jusqu'où ton script va


---------------
App Android - F1 x MotoGP - Agenda & Alertes
n°1986120
bizounours
Posté le 20-04-2010 à 23:16:36  profilanswer
 

Il va jusqu'à la fin ou presque.
 
J'ai modifié le code en fonction.

Code :
  1. if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
  2.       {
  3.       echo $erreur;
  4.       }
  5.      else
  6.       {
  7.       //On formate le nom du fichier ici...
  8.        $fichier = strtr($namefichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  9.          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  10.        $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $namefichier);
  11.    echo "$fichiertemp<BR>";
  12.     echo $destination;
  13.      if (move_uploaded_file($_FILES["$fichier"]['tmp_name'],$destination))
  14.            // if (move_uploaded_file($fichiertemp,$destination))
  15.       {
  16.        echo "ok";
  17.       }
  18.      else
  19.       {
  20.        echo "ko";
  21.       }
  22.       }


j'obtiens un résultat de l'echo placé juste avant le if move upload  
/tmp/phpDraPKJ
../lib/tmp/sound.gif
 
J'ai testé chacune des vérifications mise en place (le type de fichier, la taille, et la modification du fichier si charactere special)  
le script semble fonctionner correctement.. sauf à la fin.


Message édité par bizounours le 20-04-2010 à 23:17:41
n°1986160
bixibu
Ca ... c'est fait!
Posté le 21-04-2010 à 09:52:50  profilanswer
 

tu as ni "ok", ni "ko" ? ni erreur ?


---------------
App Android - F1 x MotoGP - Agenda & Alertes
n°1986161
bizounours
Posté le 21-04-2010 à 09:55:24  profilanswer
 

Si, si, j'ai KO,    
 
J'ai essayer de produire une erreur en donnant un chemin relatif bidon.. mais rien! :(

n°1986166
Fred999
Rabat-joie
Posté le 21-04-2010 à 10:29:52  profilanswer
 

Salut,
 
Question bête, tu as les droits d'écriture sur le répertoire de destination ?
 
Que vaut $_FILES["$fichier"]['tmp_name'] ?

mood
Publicité
Posté le 21-04-2010 à 10:29:52  profilanswer
 

n°1986170
bizounours
Posté le 21-04-2010 à 10:35:49  profilanswer
 

Hello,  
 
Oui j'ai les droits.
 
résultat du file tmp name :  /tmp/phpDraPKJ  
 
J'ai pris le script pour l'utiliser avec un formulaire bidon.
Je n'utilise pas le for (i=.....)  
et tout fonctionne.  
 :o  
Je n'arrive pas à le faire marcher dans les conditions actuel.
Es ce que le fait d'utiliser le for pourrait me bloquer ?  
 
 

n°1986171
Fred999
Rabat-joie
Posté le 21-04-2010 à 10:40:39  profilanswer
 

On t'a conseillé d'utiliser un tableau : dans ce cas, n'utilise pas for mais foreach, et poste à nouveau le code. Il n'y a aucune raison qu'une boucle empêche l'exécution de ton script.

n°1986175
Arcan_-
Posté le 21-04-2010 à 10:50:03  profilanswer
 

Citation :

if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
    echo $erreur;
    }


Avec ça, tu affiche $erreur si il n'y a pas d'erreur ...
 
Tu n'as pas besoin des "" autour de $fichier dans $_FILES["$fichier"]['tmp_name'].
 

Citation :

$extension = strrchr($namefichier, '.');


Utilises pathinfo pour récupérer l'extension du fichier.
Et pour plus de sécurité, fais une vérification du type mime.
 
Comme l'a déjà dit bixibu, utilises un tableau.

Citation :

<input type="file" name="files[x]">
<input type="file" name="files[y]">
<input type="file" name="files[z]">


 

Citation :

foreach($_FILES['files] as $id=>$var){
echo $var['tmp_name'];
echo $var['name'];
...
}

n°1986266
bizounours
Posté le 21-04-2010 à 13:46:13  profilanswer
 

Merci pour les infos, comme j'ai dis hier, je comptais essayer de passer en tableau aujourd'hui, comme l'avait dis bixibu.
 
je pense avoir réussi (bas voui, ca vous parait peut être simple, mais pour un novice il faut chercher/comprendre pour pouvoir avancer  :))
 
 

Code :
  1. _FILES["fichier"]
  2. Array
  3. (
  4.     [name] => Array
  5.         (
  6.             [1] => images2.jpg
  7.             [2] => erreur.jpg
  8.             [3] => sound.gif
  9.             [4] => images1.jpg
  10.         )
  11.     [type] => Array
  12.         (
  13.             [1] => image/jpeg
  14.             [2] => image/jpeg
  15.             [3] => image/gif
  16.             [4] => image/jpeg
  17.         )
  18.     [tmp_name] => Array
  19.         (
  20.             [1] => /tmp/phpCjUEKw
  21.             [2] => /tmp/phpLWAjaI
  22.             [3] => /tmp/phpuiP9zT
  23.             [4] => /tmp/phpvT50Z4
  24.         )
  25.     [error] => Array
  26.         (
  27.             [1] => 0
  28.             [2] => 0
  29.             [3] => 0
  30.             [4] => 0
  31.         )
  32.     [size] => Array
  33.         (
  34.             [1] => 4491
  35.             [2] => 9176
  36.             [3] => 2164
  37.             [4] => 4250
  38.         )
  39. )


 
je pense que c'est ca que vous m'avez dis de faire ?
 
maintenant je m'attaque à cela
foreach($_FILES['fichier'] as $id=>$var)
{
echo $var['tmp_name'];
echo $var['name'];
}
 
Merci de l'aide apportée:)
 :jap:

n°1986271
Fred999
Rabat-joie
Posté le 21-04-2010 à 13:50:04  profilanswer
 

Pense à toujours tester si $_FILES['fichier'] est bien un tableau avant ton foreach.
 
Sinon, oui c'est ça.

n°1986342
bizounours
Posté le 21-04-2010 à 15:26:25  profilanswer
 


Code :
  1. foreach ($_FILES['fichier'] as $cle=>$valeur)
  2.   {
  3.               echo "$cle";
  4.              
  5.             foreach ($valeur as $cle=>$valeur)
  6.    {
  7.    echo " $valeur<BR>";
  8.            
  9.    } 
  10.   }


La question peut paraitre bête mais une fois que j'ai listé tout mon tableau
comment utiliser ses données de manière à m'en servir avec le script précédemment donné ??
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Upload de fichier, Move upload file Echec

 

Sujets relatifs
Lire fichier avec XMLodtPHP : erreur étrange (fichier odt défectueux)
Upload de gros fichier ?Recherche de voyelles dans un fichier
[BATCH] creation de repertoires par parcours de fichier texteTélécharger un fichier depuis batch
Récupération des données d'un fichier .hex[PHP/MYSQL] formulaire et modification à distance de fichier
Plus de sujets relatifs à : Upload de fichier, Move upload file Echec


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR