Script d'upload qui ne fonctionne plus

Eléphanteau du PHP | 41 Messages

05 mai 2011, 17:35

Bonjour,
J'utilise un script qui uploade un fichier CSV pour l'ajouter à ma base de données. Je ne l'ai pas utilisé depuis décembre, et là il ne fonctionne plus.

Voici le script :
<?
ini_set('auto_detect_line_endings',TRUE);
$action=$_POST['action']; 
$fichier=$_POST['fichier']; 

switch($action)

  {
case "ajouter":

if( isset($_POST['upload']) ) 
{
    $content_dir = '';
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    { exit("Le fichier est introuvable"); }

    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'csv') )
    { echo $type_file; exit("Le fichier n'est pas au format CSV"); }

    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    { exit("Impossible de copier le fichier dans $content_dir"); }

    echo "Le fichier a bien été uploadé : " . $name_file . "<br><br>";
    $fichier = $name_file;
}
	
// Connexion à la BDD...
   
 if (file_exists($fichier))
     $fp = fopen("$fichier", "r"); 
 else
     { 
       echo "Fichier introuvable !<br>Importation stoppée.".mysql_error();
       exit();
     }
      
    while (!feof($fp)) 
    { 
       $liste = fgetcsv($fp,4096,",");
           
       $num = $liste[0]; 
       $ue3b = $liste[1]; 
       $ue5 = $liste[2]; 
       $ue6 = $liste[3]; 
       $ue7 = $liste[4]; 
            
       $query = "UPDATE P1 SET ue3b='$ue3b', ue5='$ue5', ue6='$ue6', ue7='$ue7' WHERE num='$num'"; 
       $result= MYSQL_QUERY($query); 
     } 
     
     echo "<br><b>Importation Ok !</b>"; 
     fclose($fp); 
     MYSQL_CLOSE(); 
   
   break;   

// Le formulaire d'importation...

   default: 
   ?>  
Le script bloque à "application/octet-stream Le fichier n'est pas au format CSV".
"application/octet-stream" correspondant à echo $type_file, je ne sais pas si c'est normal...

Une idée ? :?

ViPHP
ViPHP | 2577 Messages

05 mai 2011, 17:44

Bonjour,

une piste : strstr() est sensible à la casse. Pour une fonctionnalité identique, mais insensible à la casse, reportez-vous à stristr().

Eléphanteau du PHP | 41 Messages

05 mai 2011, 18:59

Merci pour l'info, mas le problème ne semble pas venir d'ici (ça peut par contre m'être utile si des utilisateurs veulent uploader des fichiers CSV).

Le souci venait de "$type_file = $_FILES['fichier']['type'];", en remplaçant ['type'] par ['name'] ça fonctionne :)

ViPHP
AB
ViPHP | 5818 Messages

05 mai 2011, 21:16

Oui c'est bizarre que cela fonctionnait avant.