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 :

Fichier tronqué au dl par appel php


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut Fichier tronqué au dl par appel php
    Bonjour,
    soit le script suivant, qui envoie un fichier txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      header("Content-type: application/force-download"); //essayé aussi avec 'octet-stream'
      header("Content-Length: ".filesize("nom.txt") );
      header("Content-Disposition: attachment; filename=nom.txt") ;
      readfile("nom.txt");
    il s'agit de listes de noms, qui arrivent comme elle doivent si elles sont courtes (~50 lignes), mais il manque systématiquement les 9 derniers caractères s'il est long (~500 lignes)... Je ne vois pas vraiment où chercher
    merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    je remarque aussi qu'il y a deux lignes vides au haut de la page... il va sans dire que le fichier est ok sur le serveur. Celui-ci a été créé avec fwrite, en résumé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $fichier = fopen( $nom , 'w' ) ;
    $contenu = 'bla bla
    ligne 2
    etc...' ;
    fwrite( $fichier , $contenu ) ;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    bon, je viens d'essayer avec un fichier écrit avec un simpe éditeur ( gedit ) pour voir si ce n'était pas le script d'écriture qui posait problème, mais c'est pareil...
    Puis j'ai remplacé le "force download" par "text/plain", et là il le télécharge bien, avec tous les caractères à la fin, mais j'ai tout de même les deux lignes vide en début de fichier!?!
    et de plus, est-ce que certains navigateurs ne risquent pas de l'afficher plutôt que de le télécharger?

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Avec l'entête Content-Transfer-Encoding: binary ça devrait bien passer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header('Content-Type: plain/text');
    header('Content-Disposition: attachment; filename="nom.txt"');
    header('Content-Length: '.filesize('nom.txt'));
    header('Content-Transfer-Encoding: binary');
    sur tous les navigateurs.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    ça n'a rien changé, mais j'ai trouvé la solution:
    j'ai mis selon la doc php de fileread():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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);
    et par élimination, c'est ob_clean() qui manquait...
    J'ai un autre script qui envoie un gros zip avec du son, je vais faire pareil par sécurité, même si ça semblait fonctionner.
    Mais je ne suis pas sûr de comprendre le problème...

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

Discussions similaires

  1. Appel d'un fichier d'aide html par un bouton
    Par JMVBAExcel dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/01/2009, 13h11
  2. [Excel] Lecture d'un fichier excel sous linux par php
    Par marcandre dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 13/07/2008, 16h45
  3. [PHP-JS] Upload de fichier en passant par JAVASCRIPT + PHP
    Par polothentik dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/05/2008, 08h52
  4. [MySQL] Mise en bdd d'un fichier csv en passant par un code php
    Par Cereales dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/03/2008, 15h45
  5. PHP/HTMLDOC erreur "le fichier ne commence pas par '%PD
    Par petitmoosse dans le forum Langage
    Réponses: 3
    Dernier message: 02/03/2006, 18h05

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