Je redirige les visiteurs de mon site de la page A à la page B. Dans la page B, je m'attends à ce que les utilisateurs obtiennent le fichier PDF téléchargé (à télécharger lors du chargement de la page B). J'ai pris le code d'un autre article (voir un previous question answered here) et mon code de la page B est le suivant:Pourquoi le fichier téléchargé n'est pas téléchargé à la place, il est affiché dans le navigateur?
<?php
header('Content-Disposition: attachment; filename=nature.pdf');
header('Content-type: application/pdf');
$fn=fopen("/wp-content/nature.pdf","r");
fpassthru($fn);
?>
La sortie n'est pas en ouvrant une boîte de dialogue de téléchargement, au lieu des caractères illisibles sont affichés dans le navigateur telles que les suivantes (je viens ramassé un petit échantillon ci-dessous):
% PDF 1,4% 3 0 obj <> flux xMK1o + $ zig & V = T = Xo K i + # V yx3 (BX pW`
Serveur: OS Linux; Version PHP: 5.2.17
Le visiteur -> Navigateur: Firefox; OS: Windows 2000
Est-il possible d'échouer en raison de l'ancien système d'exploitation côté client? Si non, quelqu'un connaît-il une solution pour forcer le téléchargement? Toute aide serait très appréciée.
Merci.
try readfile ("/ wp-content/nature.pdf"); au lieu de fopen & fpassthru – Venu
En fonction de la taille du téléchargement, vous pouvez utiliser 'XSendFile' (supporté à la fois par lighttpd & apache2 avec modxsendfile). Ensuite, vous servirez le téléchargement avec: 'header ('XSendFile: /wp-content/nature.pdf');' et XSendFile s'occupera du reste. – user268396
@Venu - déjà essayé (voir ci-dessous lors du test du code proposé par l'utilisateur "take"). Merci. –