J'ai des catalogues PDF de grande taille sur mon site Web et je dois les lier en téléchargement. Lorsque j'ai cherché sur Google, j'ai trouvé une telle chose ci-dessous. Il devrait ouvrir la fenêtre contextuelle " Enregistrer sous ... " au clic sur le lien ...
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
Mais cela ne fonctionne pas: / Lorsque je crée un lien vers un fichier comme ci-dessous, il ne fait que créer un lien vers le fichier et essaie d'ouvrir le fichier.
<a href="filename.pdf" title="Filie Name">File name</a>
MISE À JOUR (selon les réponses ci-dessous):
Comme je le vois, il n'existe pas de solution multi-navigateurs fiable à 100% pour cela. Le meilleur moyen est probablement d'utiliser l'un des services Web énumérés ci-dessous et de fournir un lien de téléchargement ...
Réponses:
D'une réponse à Forcer un navigateur à enregistrer le fichier comme après avoir cliqué sur le lien :
la source
download
attribut est limité à Chrome, Firefox et Opera. Même les versions récentes d'IE et de Safari ne le prennent pas en charge. Pour une assistance future: consultez caniuse.com/#feat=download !Cela fonctionne pour moi dans Firefox et Chrome.
la source
target="_blank"
Cela peut la rendre légèrement plus utilisable pour les navigateurs non compatibles (les fichiers PDF s'ouvrent ensuite dans une nouvelle fenêtre / onglet, plutôt que d'écraser la page actuelle).target="_blank"
c'était nécessaire cardownload
seulement échoué à déclencher le téléchargement correctement (Chrome)download
attribut, elle sera utilisée comme nom de fichier. Je l'utilise tout le temps dans les scripts utilisateur.Les balises Meta ne sont pas un moyen fiable d'atteindre ce résultat. En général, vous ne devriez même pas faire cela - il devrait être laissé à l'utilisateur / agent utilisateur de décider quoi faire avec le contenu que vous fournissez. L'utilisateur peut toujours forcer son navigateur à télécharger le fichier s'il le souhaite.
Si vous souhaitez toujours forcer le navigateur à télécharger le fichier, modifiez directement les en-têtes HTTP. Voici un exemple de code PHP:
Notez qu'il ne s'agit que d'une extension du protocole HTTP; certains navigateurs peuvent de toute façon l'ignorer.
la source
ob_end_flush()
n'a pas aidé non plus.J'ai eu ce même problème et j'ai trouvé une solution qui a très bien fonctionné jusqu'à présent. Vous mettez le code suivant dans votre
.htaccess
fichier:Il est venu de Forcer un fichier à télécharger au lieu de s'afficher dans le navigateur .
la source
<FilesMatch "\.(pdf|xlsx?|docx?)$">
J'ai trouvé une solution très simple pour Firefox (ne fonctionne qu'avec un href relatif plutôt que direct): ajouter
type="application/octet-stream"
:la source
Essayez d'ajouter cette ligne à votre fichier .htaccess.
J'espère que cela fonctionnera car il est indépendant du navigateur.
la source
En général, cela se produit, car certains paramètres de navigateur ou plug-ins ouvrent directement le PDF dans la même fenêtre, comme une simple page Web.
Ce qui suit pourrait vous aider. Je l'ai fait en PHP il y a quelques années. Mais actuellement, je ne travaille pas sur cette plate-forme.
Enregistrez ce qui précède sous download.php .
Enregistrez ce petit extrait en tant que fichier PHP quelque part sur votre serveur et vous pouvez l'utiliser pour télécharger un fichier dans le navigateur, plutôt que de l'afficher directement. Si vous souhaitez diffuser des fichiers autres que PDF, supprimez ou modifiez la ligne 5.
Vous pouvez l'utiliser comme ceci:
Ajoutez le lien suivant à votre fichier HTML.
Référence de: Ce blog
la source
download.php?file=database_password_file.php
par exemple.Mettez simplement le code ci-dessous dans votre
.htaccess
fichier:Ou vous pouvez également faire des trucs en JavaScript
la source
Je viens de l'utiliser, mais je ne sais pas si cela fonctionne sur tous les navigateurs.
Cela fonctionne dans Firefox:
la source
Un moyen très simple d'y parvenir, sans utiliser de sites de téléchargement externes ou modifier les en-têtes, etc. consiste simplement à créer un fichier ZIP avec le PDF à l'intérieur et à le lier directement au fichier ZIP. Cela déclenchera TOUJOURS la boîte de dialogue Enregistrer / Ouvrir, et il est toujours facile pour les gens de double-cliquer sur les fenêtres PDF sur lesquelles le programme associé à .zip est lancé.
BTW excellente question, je cherchais également une réponse, car la plupart des plugins PDF intégrés au navigateur prennent tellement de temps à afficher quoi que ce soit (et bloquent souvent le navigateur pendant le chargement du PDF).
la source
Une solution côté serveur est plus compatible, jusqu'à ce que l'attribut "download" soit implémenté dans tous les navigateurs.
Un exemple Python pourrait être un gestionnaire de requêtes HTTP personnalisé pour un magasin de fichiers. Les liens qui pointent vers le magasin de fichiers sont générés comme ceci:
Voici le code:
la source
Un moyen très simple de le faire, si vous avez besoin de forcer le téléchargement pour un seul lien sur votre page, est d'utiliser l'attribut de téléchargement HTML5 dans le lien href.
Voir: http://davidwalsh.name/download-attribute
avec cela, vous pouvez renommer le fichier que l'utilisateur va télécharger et en même temps, il force le téléchargement.
Il y a eu un débat pour savoir si c'est une bonne pratique ou non, mais dans mon cas, j'ai une visionneuse intégrée pour un fichier PDF et la visionneuse n'offre pas de lien de téléchargement, je dois donc en fournir un séparément. Ici, je veux m'assurer que l'utilisateur n'ouvre pas le PDF dans le navigateur Web, ce qui serait déroutant.
Cela ne sera pas nécessaire d'ouvrir la boîte de dialogue Enregistrer sous, mais téléchargera le lien directement vers la destination de téléchargement prédéfinie. Et bien sûr, si vous créez un site pour quelqu'un d'autre et que vous avez besoin qu'ils écrivent manuellement des attributs sur leurs liens, c'est probablement une mauvaise idée, mais s'il existe un moyen d'intégrer l'attribut dans les liens, cela peut être une solution légère.
la source
C'est un ancien article, mais voici ma solution en JavaScript à l'aide de la bibliothèque jQuery.
Il vous suffit d'utiliser la classe à l'
force-download
intérieur de votre<a>
balise et forcera le téléchargement automatiquement. Vous pouvez également l'ajouter au parentdiv
et récupérer tous les liens qu'il contient.Exemple:
C'est idéal pour WordPress et tout autre système ou site Web personnalisé.
la source
Après le nom du fichier dans le code HTML, j'ajoute
?forcedownload=1
Cela a été le moyen le plus simple pour moi de déclencher une boîte de dialogue pour enregistrer ou télécharger.
la source
Si vous avez un plugin dans le navigateur qui sait comment ouvrir un fichier PDF, il s'ouvrira directement. Comme dans le cas des images et du contenu HTML.
L'approche alternative consiste donc à ne pas envoyer votre type MIME dans la réponse. De cette façon, le navigateur ne saura jamais quel plugin doit l'ouvrir. Par conséquent, il vous donnera une boîte de dialogue Enregistrer / Ouvrir .
la source
J'ai juste eu un problème très similaire avec le problème supplémentaire dont j'avais besoin pour créer des liens de téléchargement vers des fichiers dans un fichier ZIP.
J'ai d'abord essayé de créer un fichier temporaire, puis j'ai fourni un lien vers le fichier temporaire, mais j'ai trouvé que certains navigateurs afficheraient simplement le contenu (un fichier Excel CSV) plutôt que de proposer de télécharger. Finalement, j'ai trouvé la solution en utilisant un servlet. Cela fonctionne à la fois sur Tomcat et GlassFish, et je l'ai essayé sur Internet Explorer 10 et Chrome.
Le servlet prend comme entrée un nom de chemin complet vers le fichier ZIP et le nom du fichier à l'intérieur du zip qui doit être téléchargé.
Dans mon fichier JSP, j'ai un tableau affichant tous les fichiers à l'intérieur du zip, avec des liens qui disent:
onclick='download?zip=<%=zip%>&csv=<%=csv%>'
Le code du servlet est dans download.java:
Pour compiler sur Tomcat, vous avez besoin du classpath pour inclure tomcat \ lib \ servlet-api.jar ou sur GlassFish: glassfish \ lib \ j2ee.jar
Mais l'un ou l'autre fonctionnera sur les deux. Vous devez également définir votre servlet dans
web.xml
.la source
Ajoutez un en-tête de réponse Content-Disposition: attachment; suivi du nom du fichier. Supprimez le méta Content-Disposition; Inline; qui ouvrira le document dans la même fenêtre
En java, il est défini comme
la source
Avec de gros fichiers PDF, le navigateur se bloque. Dans Mozilla, menu Outils → Options → Applications , puis à côté du type de contenu Document Adobe Acrobat. Dans la liste déroulante Action, sélectionnez Toujours demander .
Cela n'a pas fonctionné pour moi, donc ce qui a fonctionné était:
Menu Outils * → Modules complémentaires → Adobe Acrobat (plugin Adobe PDF pour Firefox) → DÉSACTIVER. Maintenant, je peux télécharger des livres électroniques!
la source