recupération d'un input type = file

recupération d'un input type = file - PHP - Programmation

Marsh Posté le 09-12-2004 à 14:20:54    

Voila j'ai une petite page qui permet de lire un fichier csv. Quand on clique sur le bouton envoyer il met le contenu du fichier dans une tzble de mysql. J'utilise donc une balise <input type = file name = fichier> que je récupère en faisant $_POST[fichier].
et la au lieu d'avoir un truc du genre : c:\xxxxx\xxxx\x.csv j'ai c:\\xxxxx\\xxxx\\x.csv  :ouch:  
 
Quel est le pb?

Reply

Marsh Posté le 09-12-2004 à 14:20:54   

Reply

Marsh Posté le 09-12-2004 à 14:24:10    

$_FILES['fichier']['name'];
 
http://www.toutestfacile.com/php/c [...] upload.php


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 09-12-2004 à 14:28:44    

$files stock les fichiers uploadé mais moi j'upload rien. Je veux juste récupérer le chemin que l'utilisateur a choisi pour ouvrir manuellement le fichier

Reply

Marsh Posté le 09-12-2004 à 15:27:05    

Personne n'a de réponses? j'ai essayé quand on tape un '\' dans une zone de texte automatiquement quand on récupère la valeur il en met 2 et si on met 2 slach il en met 4.
Comment résoudre ce problème?

Reply

Marsh Posté le 09-12-2004 à 15:33:25    

spaceuniverse a écrit :

$files stock les fichiers uploadé mais moi j'upload rien. Je veux juste récupérer le chemin que l'utilisateur a choisi pour ouvrir manuellement le fichier

Comment ça manuellement ?

Reply

Marsh Posté le 09-12-2004 à 15:33:59    

spaceuniverse a écrit :

Personne n'a de réponses? j'ai essayé quand on tape un '\' dans une zone de texte automatiquement quand on récupère la valeur il en met 2 et si on met 2 slach il en met 4.
Comment résoudre ce problème?

C'est l'option magic_quote qui est activée (cf la doc)

Reply

Marsh Posté le 09-12-2004 à 15:42:00    

yes ok sa marche merci :)

Reply

Marsh Posté le 13-03-2005 à 18:38:44    

Code :
  1. <?php
  2. echo "<form enctype=\"multipart/form-date\" action=\"page3.php3?id=$id\" method=\"post\">
  3.       <input type=\"file\" name=\"fichier\"><br><br>
  4.       <input type=\"submit\"><br><br></form>";
  5. ?>


Voila le code se trouvant sur la page ou il y a le forumlaire
 

Code :
  1. <?php
  2.     $repertoireDestination = "repertoirebidon/";
  3.     $nomDestination        = $HTTP_POST_FILES["fichier"]["name"];
  4.     // Pour raison de sécurité nous ajouterons aux fichiers
  5.     // portant une extension .php .php3, l'extension .txt
  6.     if (eregi(".php", $nomDestination)) {
  7.         $nomDestination .= ".txt";
  8.     }
  9.    
  10.     if (is_uploaded_file($HTTP_POST_FILES["fichier"]["tmp_name"])) {
  11.         if (rename($HTTP_POST_FILES["fichier"]["tmp_name"],
  12.                    $repertoireDestination.$nomDestination)) {
  13.             echo "Le fichier temporaire ".$HTTP_POST_FILES["fichier"]["tmp_name"].
  14.                  " a été déplacé vers ".$repertoireDestination.$nomDestination;
  15.         } else {
  16.             echo "Le déplacement du fichier temporaire a échoué".
  17.                  " vérifiez l'existence du répertoire ".$repertoireDestination;
  18.        }         
  19.     } else {
  20.        echo "Le fichier n'a pas été uploadé (trop gros ?)";
  21.     }
  22. ?>


 
et voila le code de la page qui permet l'upload  
 
mon probleme est que je ne sais pas quelle repertoire il faut mettre a $repertoireDestination si c'est un repertoire se trouvant sur mon pc ou dans mon herbergeur comme free.
Mon but etant de faire comme dans le forum phpBB lorque dans le profile il est possible d'envoyer un avatar.
Merci de vos reponse.

Reply

Marsh Posté le 13-03-2005 à 19:27:36    

en fait c'est bon :P

Reply

Marsh Posté le 14-03-2005 à 08:50:19    

Citation :

$HTTP_POST_FILES["fichier"]["name"]


sur les versions récentes de PHP, c'est quand meme moins lourd d'utiliser $_FILES["fichier"]["name"]...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 14-03-2005 à 08:50:19   

Reply

Marsh Posté le 14-03-2005 à 20:45:47    

oué je sais j'ai changer merci  
:)

Reply

Marsh Posté le 15-03-2005 à 19:38:27    

Tiens, ce topic me fait penser que j'ai essayé de faire la meme chose il y a quelques temps ...
 
Comment faire pour avoir un formulaire avec un bouton "parcourir", mais n'envoyer que le chemin d'acces du fichier, sans faire l'upload ...
 
Parcequ'il me semble que même si le script de l'autre côté ne fait rien pour récuperer le fichier, il est quand meme uploadé quand on clique sur valider non ?


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 15-03-2005 à 20:05:33    

oui il est uploader dans un rép temporaire du serveur, meme si tu n'en récupère que le chemin par la suite...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 16-03-2005 à 08:26:43    

Et il n'y a pas moyen de faire autrement ?
 
J'ai pensé faire un script JS qui, lorsqu'on valide le formulaire, copie le champ fichier vers un champ texte normal et efface le champ du fichier ... Mais bon, si qqn désactive JS ... ça ne marchera plus ... et bonjour la surcharge des serveurs si qqn upload un fichier de 600 Mo ... tout ça pour en récuperer le chemind d'accès :)
 
Merci.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 16-03-2005 à 10:21:32    

en meme temps c'est un peu bizarre de vouloir juste récupérer le nom du fichier... vu que tu l'a pas sur le serveur, tu peux pas permettre aux autres de le downloader... si le mec le supprime ou le déplace sur sa machine, l'adresse que tu as stockée est mauvaise et t'a aucun moyen de le savoir et de mettre à jour... :(
 
J'ai du mal à comprendre l'utilité....


Message édité par Xav_ le 16-03-2005 à 10:22:18

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 16-03-2005 à 10:40:03    

C'est pour de l'intranet avec des fichiers sur le réseau ;)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 16-03-2005 à 11:22:36    

alors tu fait direct un input de type "text" dans lequel le mec copie/colle le chemin du fichier... si tu n'a besoin que d'une adresse et non d'un fichier, "file" n'est pas pour toi ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 16-03-2005 à 12:02:12    

Je sais bien, mais le problème c'est que les chemins d'accès sont parfois très long \\serveur\dossier\un nom de dossier avec mots clés\encore un nom de sous dossier\encore un dossier qui montre a quel point les serveurs sont mal organisé\et enfin le fichier avec 250 mots dans le nom\
 
Enfin voilà quoi :/


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 16-03-2005 à 12:04:07    

clic droit sur le fichier, "propriété", et là tu sélectionne toute la ligne de 1Km dans le champs URL, et après "copier" et "coller" dans le champs du formulaire...
sorry j'ai pas trop le temps de faire les captures d'image pour illustrer :P


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 16-03-2005 à 13:07:00    

Je connais merci :D :lol:
 
Mais bon, ça oblige à de toute façon aller chercher le fichier là où il est, clic droit dessus, copier le chemin d'acces ... mais là déjà le nom du fichier n'est pas inclus, donc "Coller" le chemin d'acces, copier le nom du fichier, et coller le nom du fichier à la suite ...
 
Enfin bref, de toute façon je me demandais juste si c'etait possible :D ;)
 
Merci en tout cas :)
 
++


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 22-01-2009 à 14:26:15    

ratibus a écrit :

C'est l'option magic_quote qui est activée (cf la doc)


 
bonjour à tous,  
pour ma part j'ai bien mis magic_quotes_gpc = Off
mais mon problème persiste toujours, lorsque je charge un fichier, je devrais avoir F:\maj\Professeurs.csv
au lieu de ca je me retrouve avec F:\\maj\\Professeurs.csv
 
Merci de votre aide, ca fait 2 jours que j'essaie de convertir avec str_replace et d'autres méthodes mais rien ne march  :sweat:  

Reply

Marsh Posté le 22-01-2009 à 15:55:44    

De toute manière, je crois que Firefox n'envoi pas le chemin complet; juste le nom du fichier.
 
Ensuite si str_replace ne fonctionne pas, c'est que t'as un problème ailleurs. Poste du code pour voir.

Reply

Marsh Posté le 23-01-2009 à 09:42:25    

alors, voici mon formulaire de chargement :  
charger.php

Code :
  1. <form action = 'chargementEleve.php' method = 'POST' name = 'selection'>
  2. <input type='file' maxlength='20' size='20' name = 'fichier' >
  3. <input type = 'submit' name = 'BoutonValider' value = 'Charger' >
  4. </form>


 
et la voici ma page qui affiche le résultat :
chargement.php

Code :
  1. <?php
  2. $fichier = $_POST['fichier'];
  3. echo $fichier;
  4. ?>


Message édité par bahamut100 le 23-01-2009 à 09:43:34
Reply

Marsh Posté le 23-01-2009 à 10:01:40    

Pourquoi y'a-t-il des espaces entre les attributs, les = et les valeurs ? [:pingouino]

Reply

Marsh Posté le 23-01-2009 à 10:23:37    

ca revient au même, j'ai toujours eu l'habitude de faire comme ca pour aérer le code

Reply

Marsh Posté le 23-01-2009 à 11:10:03    

"<input type='file' "
"$fichier = $_POST["
 
Et un piège pour la huit, un. ;)
 
En php, quand on utilise un input de type fichier, on ne récupère pas les données du ou des fichiers dans $_POST mais dans $_FILES.
Voir ici pour plus de détail

Reply

Marsh Posté le 23-01-2009 à 11:16:17    

Et on n'oublie pas un enctype multipart/form-data

Reply

Marsh Posté le 23-01-2009 à 11:17:20    

bahamut100 il manque enctype="multipart/form-data" dans la balise form
 
 [:grilled]


Message édité par Alisteroid le 23-01-2009 à 11:17:41
Reply

Marsh Posté le 23-01-2009 à 12:06:14    

merci de votre aide.
 
Mais en fait ce que je voudrais, ce n'est pas charger un fichier, c'est le lire (avec explode()) et récupérer les données pour pouvoir les insérer dans une base mySql

Reply

Marsh Posté le 23-01-2009 à 12:09:34    

:heink:  
LA seule façon de le faire c'est celle qu'on te donne

Reply

Marsh Posté le 23-01-2009 à 12:39:24    

Il faut obligatoirement uploader le fichier. Sinon trop de bordel (déjà la compatibilité navigateurs, FireFox n'envoit pas le chemin complet)

Reply

Marsh Posté le 23-01-2009 à 15:22:51    

une fois que le fichier est uploadé, comment le lire ?

Reply

Marsh Posté le 23-01-2009 à 15:23:33    

On vient de te le dire [:sadnoir] Via $_FILES

Reply

Marsh Posté le 23-01-2009 à 15:56:04    

j'ai bien compris ca, c'est fait et ca fonctionne, mais comme je l'ai dit plus haut, je dois parcourir ce fichier sans le lire, et je n'ai pas vu de propriétés de $_FILES qui permettaient cela. Je me fait comprendre ?

Reply

Marsh Posté le 23-01-2009 à 15:58:50    

Hum ... tu t'y prendrais comment pour traverser un pays sans sortir de chez toi?
Là, c'est pareil. parcourir le contenu d'un fichier sans lire le contenu d'un fichier, c'est, comment dire, ... absurde comme idée.

Reply

Marsh Posté le 23-01-2009 à 18:20:14    

[:ddr555] il veut juste lire un bouquin sans l'ouvrir  [:ddr555]

 

Bonjour, je veux cliquer sur un bouton et faire deux redirection en uploadant un fichier que je veux parcourir sans le lire, le tout avec une musique de fond et protégé par un mot de passe en javascript.
Vous pouvez me le faire?


Message édité par Alisteroid le 23-01-2009 à 18:24:01
Reply

Marsh Posté le 24-01-2009 à 17:08:39    

je l'ai deja fait avec la méthode explode() et ca fonctionnait tres bien.
je récupérais le fichier .csv
je faisais :  

Code :
  1. $fichier = $_POST['fichier'];
  2. if (file_exists($fichier))
  3.      {$fp = fopen("$fichier", "r" );
  4.       while (!feof($fp))
  5.       { /* Tant qu'on n'atteint pas la fin du fichier */
  6.        $ligne = fgets($fp,4096); /* On lit une ligne */ 
  7.        /* On récupère les champs séparés par ; dans liste*/
  8.        $liste = explode( ";",$ligne);
  9.        echo $liste[0];
  10.  }


Message édité par bahamut100 le 24-01-2009 à 18:22:57
Reply

Marsh Posté le 25-01-2009 à 22:05:24    

Hmmm et si y'a un point-virgule dans une valeur ? C'est toujours une mauvaise idée de parser les CSV à la main, y'a des tonnes de libs qui savent faire ça très bien...

Reply

Marsh Posté le 26-01-2009 à 09:17:24    

merci de me mettre sur la piste, mais tu peux m'en, dire plus ?
(pour le fichier CSV, c'est un logiciel de l'éducation qui exporte une liste d'élève en fichier csv)

Reply

Marsh Posté le 26-01-2009 à 09:28:16    

Genre via fgetcsv

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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