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

Langage PHP Discussion :

Entête renvoit un fichier vide


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 21
    Points
    21
    Par défaut Entête renvoit un fichier vide
    Bonjour
    j' ai besoin de declencher le téléchargement d'un fichier par l'intermédiaire d'un header. Le fichier est téléchargé mais vide( la boite de téléchargement s'ouvre). J'ai bien vérifié sur le serveur, il est bien présent.
    Si vous avez des idées sur ce qui cloche dans ce code, je suis prenneur

    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
    <?php
    $file = 'mysql.txt';
     
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
    ?>
    Merci par avance
    Laurent

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux tenter en inline :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header('Content-Type: application/txt');
    header('Content-Disposition: inline; filename=file.txt');
    sinon pourquoi tu mets ça ?

    A part ça, ton fichier contient bien quelque chose ? ^^
    bye

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta réponse.
    j'ai fais plusieurs tests afin de mieux cerner la nature du problème

    Pour etre certain que le chemin du fichier est correct et qu 'il n'est pas vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $filename = '....chemin de base/gestion_fichiers/mysql.txt';
     
    if (file_exists($filename)) {
        print "Le fichier $filename existe";
    } else {
        print "Le fichier $filename n'existe pas";
    }
     
    echo filesize($filename);
    ?>
    j'ai bien "le fichier .....existe" et pour la taille retournée 115410

    j'ai refais un nouveau fichier php telechar_header.php avec dedans uniquement
    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
    <?php
    $file = '/WebDisc/Pedagogie/EPS/2005/college/php_simplfie/gestion_fichiers/mysql.txt';
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
       header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
       header('Content-Transfer-Encoding: binary');
       header('Expires: 0');
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       header('Pragma: public');
       header('Content-Length: ' . filesize($file));
    readfile($file);
     exit;
    }
    ?>
    Meme problème, la boite de téléchargement s'ouvre mais le fichier est vide
    Merci par avance
    Laurent

  4. #4
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    Change cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: application/octet-stream');
    En :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/plain');

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    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
    <?php	
    $PathRoot = '........chemin de base......../stock_fichiers/';
    $CheminRepertoire= $PathRoot.$etab.'/';
    $chemin_fichier = $CheminRepertoire.$row_document['Nom']; 
    $fichierouvert = fopen ($chemin_fichier, "r");
    // Initialisation de la variable contenu
    $contenu ="";
    //Mise en mémoire du fichier dans une variable $contenu
    while (!feof($fichierouvert)) {
          $contenu .= fread($fichierouvert, 8192);
    }
    fclose ($fichierouvert);
     
     
    if(is_file($chemin_fichier)) {
    	header('Content-Description: File Transfer');
    	header('Content-Type: application/force-download');
    	header('Content-Disposition: attachment; filename='.$row_document['Nom']);
    	echo $contenu;
    	exit;
    }
     
     
    mysql_free_result($document);
    ?>
    Merci pour vos réponses ,j'ai trouvé une solution en contournant le problème
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $fichierouvert = fopen ($chemin_fichier, "r");
    // Initialisation de la variable contenu
    $contenu ="";
    //Mise en mémoire du fichier dans une variable $contenu
    while (!feof($fichierouvert)) {
          $contenu .= fread($fichierouvert, 8192);
    }
    fclose ($fichierouvert);
    puis ce n'est pas très élégan mais cela fonctionne
    @Bientot
    Laurent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un fichier vide
    Par Bouguennec dans le forum Pascal
    Réponses: 5
    Dernier message: 08/08/2007, 19h45
  2. [VB6] entête d'un fichier XML
    Par ennamsaoui dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/06/2006, 13h55
  3. Compression fichiers vides
    Par Dobyan08 dans le forum Linux
    Réponses: 2
    Dernier message: 08/06/2006, 12h21
  4. fichier vide ou non
    Par mrtatou dans le forum C
    Réponses: 6
    Dernier message: 07/02/2006, 04h04
  5. Mysqldump donnant un fichier vide
    Par simoryl dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 15/02/2005, 16h42

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