PHP correcte des en-têtes de fichier pdf à télécharger
J'ai vraiment du mal à obtenir mon application pour ouvrir un fichier pdf lorsque l'utilisateur clique sur un lien.
Jusqu'à présent, la balise d'ancrage redirige vers une page qui envoie les en-têtes qui sont:
$filename='./pdf/jobs/pdffile.pdf;
$url_download = BASE_URL . RELATIVE_PATH . $filename;
header("Content-type:application/pdf");
header("Content-Disposition:inline;filename='$filename");
readfile("downloaded.pdf");
cela ne semble pas fonctionner, personne n'a réussi triées ce problème dans le passé?
- Faute de frappe? Essayez d'ajouter un
'
$filename='./pdf/jobs/pdffile.pdf';
et dans cette ligneheader("Content-Disposition:inline;filename='$filename");
manquant guillemet. - Comment/pourquoi êtes-vous à l'aide de
$url_download
?
Vous devez vous connecter pour publier un commentaire.
Exemple 2 sur w3schools montre ce que vous essayez d'atteindre.
Rappelez-vous aussi que,
readfile()
très mauvais pour les fichiers de grande taille, parce que quand certains veulent les utilisateurs à télécharger, le téléchargement de fichiers de la mémoire tampon sur le serveur de ram!!!Il y a certaines choses à prendre en considération dans votre code.
Tout d'abord, écrire les en-têtes correctement. Vous ne verrez jamais de n'importe quel serveur d'envoi
Content-type:application/pdf
, la tête estContent-Type: application/pdf
, espacés, avec majuscule la première lettre etc.Le nom du fichier à
Content-Disposition
est le nom de fichier uniquement, et non le chemin complet, et altrough je ne sais pas si son caractère obligatoire ou non, ce nom est enveloppé dans"
pas'
. Aussi, votre dernier'
est manquant.Content-Disposition: inline
implique le fichier doit être affiché, pas de téléchargement. Utilisationattachment
à la place.En outre, faire l'extension du fichier en majuscule pour le rendre compatible avec certains appareils mobiles.
Tout cela étant dit, votre code devrait ressembler à ceci:
Content-Length
est facultative, mais est également important si vous voulez que l'utilisateur soit en mesure de garder une trace de la progression du téléchargement et de détecter si le téléchargement a été interrompu. Mais lorsque vous l'utilisez, vous devez vous assurer que vous ne serez pas envoyer quoi que ce soit avec le fichier de données. Assurez-vous il n'y a absolument rien avant<?php
ou après?>
, même pas une ligne vide.?>
. Dans ce cas, il est préférable de le supprimer.J'ai eu le même problème récemment et cela m'a aidé:
J'ai trouvé cette réponse ici
Pouvez-vous essayer cela,
readfile
besoin du chemin complet du fichier.Vous devez définir la taille de fichier...
Et cette ligne est fausse:
Vous foiré quotas.