[HTML]input file : compatibilité browsers

Assuryan -  
 pierox -
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   Statut Membre Dernière intervention   1
 
<form method="post" action="load.php" enctype="multipart/form-data">

Essaye avec le enctype en plus :)
0
Assuryan
 
Déjà essayé... :(
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200 > Assuryan
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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
 
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