IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Serveurs (Apache, IIS,...) Discussion :

probleme download fichier


Sujet :

Serveurs (Apache, IIS,...)

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 24
    Points
    24
    Par défaut probleme download fichier
    Bonjour,
    Je cree un site intranet permettant à un utilisateur de telecharger tous les enregistrements d'une table MySQL via un formulaire.
    J'ai réalise le script en php:
    La requete sur la table est effectuée via
    "SELECT * INTO OUTFILE '$mysqlFile' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n' FROM `$table ORDER BY NRBIS ASC";
    Un fichier vide est crée sur le serveur puis le resultat de la requête y est écrit et enfin le client peut telecharger le fichier(1 ligne par enregistrement et chaque valeur des variables séparées par un ";")
    Mon script à déjà fonctionné avant mais depuis que j'ai réinstallé mon serveur web il y a un petit soucis au telechargement :
    Le fichier qui arrive chez le client est tronqué. Lors de son telechargement une fenêtre s'affiche sous Konqueror :
    "La connexion à xxx.xx.xx.xxx a été coupée"
    Il est téléchargé à 50% (1,9Mo sur 3,4) : seuls la moitié environ des enregistrements sont présents chez le client alors que lorsque je vérifie le fichier crée sur le serveur : il contient bien la totalité de mes enregistrement...
    Donc j'imagine que celà est du au parametrage de soit :
    httpd.conf ou php.ini mais je n'arrive pas à trouver quelle directive pose probleme....

    Merci pour vos suggestion.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Plusieurs choses...
    1. Donne nous la version de apache, de php, et le systeme sur lequel il est installer (linux/bsd/windows...)

    2. Ton fichier php renvoit-il vers le fichier de la base de donner
    ou il l'ecrit directement.
    code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: http://www.example.com/somefile.ext");
    Versus
    code php :
    La methode avec re-dirigement permeterais de savoir si le probleme
    vients du php (comme trop de temps d'execution) ou du serveur
    (limite d'octets exceder)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    salut Drayk,
    Donne nous la version de apache, de php, et le systeme sur lequel il est installer (linux/bsd/windows...)
    MandrakeLinux10.1, Apache2-0.54, PHP5-0.4

    pour le reste je saisi pas trop ce que tu veux dire....
    Voici le script que j'ai fait et qui comme je l'ai dit plus haut il a dejà fonctionné correctement...
    Je pense plus que c'est du à un timeout mais j'ai beau tester des modification dans php.ini... rien y fait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php    
    include ("../scriptsPHP/db.php");
    include ("../scriptsPHP/connect.php");
    
    $repTemp = "./";
    $repMysql= "/var/www/tmp/";
    
    $query0 = "SHOW COLUMNS FROM $tbl ";
    $result0 = mysql_query($query0) or die ("Query to show columns from table Failed!");
    
    if (isset($DOWNLOAD)){
    
    
        if ($DOWNLOAD == '1'){
    
            if (isset($_POST['downloadAll'])){
                $nameFile = "allRecords.ath";
                $tempFile = $repTemp.$nameFile;
                $mysqlFile = $repMysql.$nameFile;
    
                $query2 = "SELECT * INTO OUTFILE '$mysqlFile' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n' FROM $tbl ORDER BY id ASC";
                $result2 = mysql_query ($query2) or die ("Query Failed download all records.\n<br />Query: " . $query2 . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());
        
                if (file_exists($mysqlFile)){
                    if (copy($mysqlFile, $tempFile)){
                        //formatage du fichier:
                        //recupération de la ligne des variable
                        $cpt = 0;
                        $newFileContent = "";
                        while ($liste_champs_table = mysql_fetch_array($result0)){
                            $array_of_attributs[$cpt] = $liste_champs_table[0];
                            $cpt ++;
                        }
                        
                        for ($i = 0; $i < count($array_of_attributs)-1; $i++){
                            $newFileContent .= $array_of_attributs[$i].",";
                        }
                    
                        $newFileContent .= $array_of_attributs[count($array_of_attributs)-1]."\n";
                        //Modification du fichier /N
                        $fileContent = file_get_contents($tempFile);
                
                        // Gestion des missing values        
                        if (isset ($missingValue)){
                            if ($missingValue == 'period'){
                                $missVal = ",.,";
                                $missValFin = ",.";
                            }
                            if ($missingValue == 'nothing'){
                                $missVal = ",,";
                                $missValFin = ",";
                            }
                            if ($missingValue == 'blank'){
                                $missVal = ", ,";
                                $missValFin = ", ";
                            }
                            if ($missingValue == '-9999'){
                                $missVal = ",-9999,";
                                $missValFin = ",-9999";
                            }
                        } //fin du if isset $missingValue
            
                        if (file_exists($tempFile)){unlink($tempFile);}
                        if (file_exists($mysqlFile)){unlink($mysqlFile);}
                
                        $chercheChampsNull = ",\\N,";
                        //gestion des missing values
                        $remplaceChampsNull = $missVal;
                        $fileContent = str_replace($chercheChampsNull, $remplaceChampsNull, $fileContent);
                        $fileContent = str_replace($chercheChampsNull, $remplaceChampsNull, $fileContent);
                        $chercheChampsNullFin =",\\N";
                        $remplaceChampsNullFin = $missValFin;
                        $fileContent = str_replace($chercheChampsNullFin,$remplaceChampsNullFin,$fileContent);
    
                        $newFileContent .= $fileContent;
    
                        touch ($tempFile);
                        chmod ($tempFile, 0755);
                
                        if ($handle = fopen($tempFile,"w")){
                            $octets = fwrite($handle, $newFileContent);
                            if ($octets){
                                header("Content-disposition: attachment; filename=".$nameFile);
                                header("Content-Type: application/force-download");
                                header("Content-Transfer-Encoding: binary");
                                header("Content-Length: ".filesize($tempFile));
                                header("Pragma: no-cache");
                                header("Cache-Control: no-store, no-cache, must-revalidate,     post-check=0, pre-check=0");
                                header("Expires: 0");
                                readfile($nameFile);
                            }
                            
                            else{echo "ERROR";}
                            fclose($handle);
                        }
                        
                        else {echo "Le processus de creation de fichier a echoué";}
                    }//fin du (copy($mysqlFile, $tempFile))
                    //unlink($mysqlFile);
                }//fin du if file exist
            }//fin du isset $_POST download all
        }//fin du isset DOWNLOAD = 1
    }//fin du isset general
    
    mysql_close($connectToDB);
    ?>

Discussions similaires

  1. [HTML] Probleme download fichier dans page HTML
    Par karmouz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/04/2009, 22h17
  2. probleme ouverture fichiers Downloadés
    Par giscar dans le forum Langage
    Réponses: 3
    Dernier message: 23/03/2007, 09h04
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    Réponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [LG]Problème de fichier
    Par Andy_24DB dans le forum Langage
    Réponses: 11
    Dernier message: 03/11/2003, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo