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 :

PDF venant d'un webservice [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Par défaut PDF venant d'un webservice
    Bonjour à tous,

    Voici mon problème :

    Je lis un fichier via un webservice. Ce fichier arrive sous la forme d'une structure contenant son type mime (pour le headers) ainsi que le contenu en base 64.

    Je fais donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = $ws->getDocumentByCle($cle);
    if ($result!=false)
    {
       $fichier = base64_decode($result->file,true);
       header("Content-type: " . $result->type,true);
       echo $fichier;
    }
    J'ouvre sur internet explorer, rien ne se passe, le navigateur ne change même pas de page, ne propose rien.
    En testant, sous chrome, firefox, safari et opera, cela fonctionne sans aucun problème !

    J'ai donc essayé d'afficher le contenu du fichier en faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fichier = base64_decode($result->file,true);
    //header("Content-type: " . $result->type,true);
    echo $fichier;
    Ca ne fonctionne toujours pas sous internet explorer

    J'ai ensuite fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fichier = base64_decode($result->file,true);
    //header("Content-type: " . $result->type,true);
    echo ' '.$fichier;
    La, ça marche correctement !! Ca affiche le contenu du fichier dans le navigateur.

    J'ai tenté les headers supplémentaires "content-disposition" etc... mais rien n'y fait.
    Quelqu'un aurait une idée ?

    Merci !

    Pour info :
    wamp 2.1
    php 5.2.11
    IE 7
    Adobe 10.0.1

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Par défaut
    A savoir que j'utilise une authentification pour utiliser le projet, je sais pas si ça peut jouer.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Par défaut
    Voici la solution :
    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
    $fichier = base64_decode($result->file,true);
    if( headers_sent() ) 
      die('Headers Sent');
    ini_set('zlib.output_compression', 'Off');
    header("Pragma: public"); // required 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: private",false); // required for certain browsers 
    header("Content-Type: $result->type"); 
    header("Content-Disposition: inline; filename=\"".$result->name.'.'.$result->extension."\";" ); 
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".strlen($fichier));
    ob_clean(); 
    flush(); 
    echo $fichier;
    Pour la précision, c'est cette ligne qui solutionne le problème, les autres c'est du bonus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2008, 23h46
  2. [XML] récup en C++ d'un flux XML venant d'un webservice
    Par manhattan.project dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 18/02/2007, 15h31
  3. WebService Google sur builder 5?
    Par billuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/11/2002, 19h43
  4. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  5. [CR] exporter en PDF
    Par Nathy dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2002, 09h27

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