Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2011, 08h59   #1
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
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 :
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 :
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 :
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
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 11h22   #2
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
A savoir que j'utilise une authentification pour utiliser le projet, je sais pas si ça peut jouer.
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 15h59   #3
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
Voici la solution :
Code :
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 :
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h57.


 
 
 
 
Partenaires

Hébergement Web