2010-08-06 9 views

Répondre

5

Voici le code que j'ai utilisé pendant les trois dernières années et qui fonctionne bien. Tout à l'heure j'ai testé dans tous les navigateurs IE6, IE7, IE8 et dans tous ceux qu'il fonctionne très bien. $ fn est le chemin complet du fichier. et assurez-vous qu'il n'y a pas d'autres espaces supplémentaires ou des nouvelles lignes sont de toute façon j'ai utilisé ob_clean avant de vider le fichier dans le navigateur.

Mieux si vous n'avez aucun autre code html envoyé au-dessus de cela ... alors utilisez-le séparément sans autre contenu. sinon, démarrez le code avec ob_start(); donc à la ligne de ob_clean() il n'y aura pas de caractères supplémentaires. J'ai un module de gestion de fichiers où je télécharge des fichiers et l'utilisateur peut le télécharger. Si vous avez encore des problèmes ou si vous ne parvenez pas à le faire, ajoutez simplement quelques lignes supplémentaires à votre problème et les personnes qui verront le problème réagiront.

Si j'ai utilisé QUELQUES TETES EST ASSURER QUE ÇA MARCHE CAR INITIALEMENT I PROBLÈMES AVEC IE HAD 6.

pour les serveurs sécurisés HTTPS remplacer les deux premières têtes avec celui-ci.

header("Cache-Control: maxage=1"); 
header("Pragma: public"); 

de cette façon, cela fonctionne pour moi.

+0

dans le contrôle de cache, vous pouvez l'avoir comme ça "Cache-Control: pas de magasin, pas de cache, doit-revalider" –

+0

J'ai ajouté deux lignes supplémentaires pour le serveur sécurisé. –

+0

merci beaucoup pour la partie ob_clean, en effet c'est un très bon hack quand vous ne faites pas les en-têtes au début de la page =) – Edward

0

Set en-tête HTTP correct

<?php 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
readfile('original.pdf'); 
?> 
1

Assurez-vous que votre déclaration d'en-tête n'est pas dans l'erreur. (Avec PHP, vous devez vous assurer que le type de contenu est déclaré correctement, et est la première ligne du fichier php.)

Questions connexes