[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.

1 réponse

  1. NaeiKinDus Messages postés 53 Statut Membre 1
     
    <form method="post" action="load.php" enctype="multipart/form-data">

    Essaye avec le enctype en plus :)
    0
    1. Assuryan
       
      Déjà essayé... :(
      0
      1. Zep3k!GnO Messages postés 2049 Statut Membre 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
      2. Assuryan > Zep3k!GnO Messages postés 2049 Statut Membre
         
        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
      3. pierox > Zep3k!GnO Messages postés 2049 Statut Membre
         
        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
      4. 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