201 votes

Forcer à ouvrir la fenêtre "Enregistrer sous ..." ouverte au lien texte cliquer pour pdf en HTML

J'ai quelques grands la taille des catalogues pdf sur mon site, et j'ai besoin de faire le lien entre ces sous forme de téléchargement. Quand j'ai cherché sur google, j'ai trouvé une telle chose est indiqué ci-dessous. Il devrait ouvrir "Enregistrer sous..." popup à cliquez sur le lien..

 <head> 
    <meta name="content-disposition" content="inline; filename=filename.pdf">
    ...

mais ça ne fonctionne pas :/ quand je créer un lien vers le fichier comme ci-dessous, c'est juste des liens vers le fichier et essayez d'ouvrir le fichier.

    <a href="filename.pdf" title="Filie Name">File name</a>

Apprécier l'aide! merci beaucoup!


Mise à JOUR (selon les réponses ci-dessous):

Comme je vois il n'est pas fiable à 100% cross-browser solution pour cela. Probablement la meilleure façon est d'utiliser l'un des services web énumérés ci-dessous, et de donner le lien de téléchargement...

292voto

Ayush Gupta Points 1043

De la réponse Forcer un navigateur à enregistrer le fichier après avoir cliqué sur le lien :

 <a href="path/to/file" download>Click here to download</a>
 

92voto

user2494611 Points 31
 <a href="file link" download target="_blank">Click here to download</a>
 

Cela fonctionne pour moi dans Firefox et Chrome.

37voto

Karel Petranek Points 10740

Les balises Meta ne sont pas un moyen fiable pour obtenir ce résultat. En règle générale, vous ne devriez même pas de le faire - ce qu'il devrait être laissé à l'utilisateur/agent utilisateur de décider quoi faire avec le contenu que vous fournissez. L'utilisateur peut toujours la force de leur navigateur pour télécharger le fichier, si elles le souhaitent.

Si vous souhaitez forcer le navigateur à télécharger le fichier, de modifier les en-têtes HTTP directement. Voici un exemple de code PHP:

$path = "path/to/file.pdf";
$filename = "file.pdf";
header('Content-Transfer-Encoding: binary');  // For Gecko browsers mainly
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Accept-Ranges: bytes');  // Allow support for download resume
header('Content-Length: ' . filesize($path));  // File size
header('Content-Encoding: none');
header('Content-Type: application/pdf');  // Change the mime type if the file is not PDF
header('Content-Disposition: attachment; filename=' . $filename);  // Make the browser display the Save As dialog
readfile($path);  // This is necessary in order to get it to actually download the file, otherwise it will be 0Kb

Remarque que c'est juste une extension du protocole HTTP; certains navigateurs peuvent les ignorer, de toute façon.

25voto

Tony Points 57

C'est vraiment un vieux thread que je suis tombé je suis sûr que tout a été compris par maintenant. Eu ce même problème et trouvé une solution qui a fonctionné très bien jusqu'à présent. Vous placez le code suivant dans votre .fichier htaccess:

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

Est venu de http://www.tipsandtricks-hq.com/forum/topic/force-a-file-to-download-instead-of-showing-up-in-the-browser

5voto

Mr. Bungle Points 562

Un vraiment simple moyen pour atteindre cet objectif, sans recourir à des sites de téléchargement ou de modification des en-têtes, etc. c'est simplement de créer un fichier ZIP avec le fichier PDF à l'intérieur et lien direct vers le fichier ZIP. Ce sera TOUJOURS déclencher le dialogue Ouvrir/Enregistrer, et il est toujours facile pour les personnes à double-cliquez sur le fichier PDF windows, le programme associé .zip est lancé.

BTW, bonne question, je cherchais une réponse, puisque la plupart des navigateurs embarqués PDF plugins prendre vraiment très long à afficher quoi que ce soit (et souvent accrocher le navigateur alors que le PDF est en cours de chargement).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X