Upload fichier - php

Résolu/Fermé
DAG - 18 sept. 2008 à 13:23
 DAG - 18 sept. 2008 à 15:27
Bonjour,
Je suis en train de développer une application ou il sera possible d'uploader des fichiers sur le serveur Web.
J'ai créé un formulaire qui me permet de demander à l'utilisateur de rentrer un fichier.
Je récupère cette valeur dans une autre page de la façon suivante :

$file = $_FILES['file']['tmp_name'];

Et je lis dans cette même page ce fichier avec :

$content = file_get_contents($file,'r');

Dans cette page j'arrive à détecter quel fichier à été rentré. Et selon le fichier je demande des choses à l'utilisateur de la façon suivante :

echo "Fichier détecté : fichier Excel A<br><br>";
echo "<h3>Les QF ont-ils baculés ?</h3><br>";
echo "<form action=\"test_fichier.php\" method=\"post\" enctype=\"multipart/form-data\" name=\"form1\">";
echo "<input type=\"radio\" name=\"choix\" value=\"oui\">Oui</input>";
echo "<br>";
echo "<input type=\"radio\" name=\"choix\" value=\"non\">Non</input>";
echo "<br><br>";
echo "Cliquer sur \"continuer\" pour passer à l'étape de comparaison.<br><br>";
echo "<input type=\"hidden\" value=\"OD\" name=\"hiddenOD\">";
echo "<input type=\"hidden\" value=\"$file\" name=\"hiddenFile\">";
echo "<input type=\"submit\" title=\"valider\" alt=\"valider le formulaire\" value=\"Continuer >\" />";
echo "</form>";


J'essais donc de passer sur la page suivante la valeur $_FILES['file']['tmp_name']; via :

echo "<input type=\"hidden\" value=\"$file\" name=\"hiddenFile\">";

lorsque l'utilisateur clique sur continuer, il arrive sur une autre page ou là, je voudrais extraire le contenu du fichier dans une base.
Je récupère donc dans cette troisième page php les valeurs POST de la page précédente :

$choix = $_POST['choix'];
$file = $_POST['hiddenFile'];


Et j'aimerais reparcourir le fichier Exel afin de rentrer les valeurs dans une base de la façon suivante :

$content = file_get_contents($file,'r');
$lignes = split("\n", $content);
$handle = fopen($file, "r");
$last_line = 1;
while (($data = fgetcsv($handle, 0, ";")) !== FALSE)
....... (on met les valeurs dans la base) ..............



Le probleme est donc que j'ai les erreurs suivantes :
file_get_content(/tmp/phpPLt30b : failed to open stream : No such file or directory....blablabla
fopen(/tmp/phpPLt30b : failed to open stream No such file or directory....blablabla
fgetcsv() expect parameter 1 to be resource, boolean given in.... blablabla
En gros si je comprend bien, je n'arrive pas à garder une bonne valeur de $_FILES['file']['tmp_name']; au fur et à mesure des valeurs POST de on traitement ??

Est-ce que quelqu'un aurai une idée pour résoudre le probleme : réussir à lire le fichier excel rentré au début (sur 1iere page php) sur la 3ieme page php ?
A voir également:

3 réponses

C'est bon ça marche ! Merci encore !
1
Bonjour

Normal, le fichier uploadé est temporaire. Il est détruit à la fin du script et tu ne peux donc pas le retrouver lors de la validation de la page suivante.
Il faut que tu le sauvegardes dans un dossier à toi avec un move_uploaded_file. Là, il ne sera pas détruit et tu pourras le retrouver plus tard.
0
Ok, merci beaucoup, je vais tester ça !
0