[HTML]input file : compatibilité browsers

Fermé
Assuryan - 11 janv. 2006 à 14:23
 pierox - 26 juin 2006 à 11:19
Bonjour,

J'ai donc un bouton "Parcourir" pour recuperer un fichier :
<form method="post" action="load.php">
<b>Fichier : </b>
<input type="file" name="file_csv" >
<br><input type="submit" value="Valider" />

Seulement le probleme est que sous IE, tout marche sans probleme car je recupere dans la variable $_POST['file_csv'] l'adresse complete.

Hors avec FireFox, je ne recupere que le nom du fichier (rapport.csv) et donc ne peux lire le fichier.

Comment faire ?

Merci d'avance de votre aide.
A voir également:

1 réponse

NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007 1
11 janv. 2006 à 16:10
<form method="post" action="load.php" enctype="multipart/form-data">

Essaye avec le enctype en plus :)
0
Déjà essayé... :(
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200 > Assuryan
12 janv. 2006 à 15:37
tu veux dire qu'avec $_POST['file_csv'] juste ca, sous Ie tu récupères le chemin complet et pas avec un firefox comme client c'est super Zarb' ca. . . Sam & Tone :P

Mais au fait, pourquoi tu veux voir tout le chemin ? !

Zep3k!GnO
0
Assuryan > Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015
18 janv. 2006 à 16:44
Oui c'est bien ça. Sous FireFox je ne recupere que le nom du fichier et du coup il ne veut pas me l'ouvir.

Mais maintenant j'ai changé de methode (ou plutot, je DOIS changer de methode) et je veux extraire un fichier CSV posé a une adresse par la methode LOAD DATA INFILE. Voici mon code :
$fichier = ("http://adresse.com/cgi-bin/fichier_csv.cgi?varible1=0");
$requete="LOAD DATA INFILE '" . $load . "'
INTO TABLE concurrence
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'

IGNORE 1 LINES
(date, num_moteur, moteur, pays_moteur, etc...)";

mysql_query($requete) or die (mysql_error());

Le probleme est que avec un fichier local cela marche sans probleme, mais des que je lui passe l'adresse ou aller chercher le fichier, il veut pas : erreur :

File '\\http://adresse.com/cgi-bin/fichier_csv.cgi?varible1=0' not found (Errcode: 22)

Je ne veux pas telecharger le fichier au prealable car bcp trop long. J'utilise LOAD DATA INFILE au lieu d'INSERT pour la rapidité (avec des INSERT = 1-2 minutes....avec LOAD DATA = 30sec...)

Merci bcp de m'avoir lu et de vos reponses.
0
pierox > Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015
26 juin 2006 à 01:30
bonjour!
j'ai le meme pb
je upload un fichier csv puis je le traite avec fgetcsv

le formulaire :
<form action="" method="post" enctype="multipart/form-data" name="form1">...<input type="file" name="frafp">...<input type="submit" name="Submit" value="Convertir">

l'extraction:
$frafp = $_FILES['frafp']['tmp_name'];
$handle = fopen($frafp,'r');
$code = fgetcsv($handle, 0, ";");

avec IE pas de pb, $code est une variable tableau qui contient les champs.
avec FireFox, $code contient les caractères un à un...
(fait en PHP5)

une solution ?
merci
PA
0
pierox > pierox
26 juin 2006 à 11:19
trouvé!

contrairement à ce qui est écrit dans la doc php pour fgetcsv, mettre length à 0 focntionne bien avec IE mais pas avec firefox. solution :
length doit être plus grand que la plus grande ligne (en terme de caractères) à lire dans le fichier (y compris le caractère de fin de ligne).
j'ai mis 4096 et ça marche.

exemple complet :
<html><head></head><body>
<?php
if (isset($_FILES['file'])) {
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file,'r');
$row = 1;
$handle = fopen("$file", "r");
while (($data = fgetcsv($handle, 4096, ";")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
} else {
?><form action="" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="Envoyer">
</form><?php
}
?></body></html>
0