7
votes

Invitez l'utilisateur de télécharger le fichier PDF au lieu de l'ouverture

Dans mon site de projet, si je clique sur un lien, le PDF s'ouvre dans une nouvelle fenêtre ou parent. Eh bien, je veux qu'une boîte apparaisse qui invite l'utilisateur à télécharger le fichier au lieu de l'ouvrir.

Est-ce que quelqu'un connaît-il d'un simple événement JavaScript onclick qui le fera, dans tous les navigateurs, avec des paramètres par défaut?

Mon serveur est basé sur PHP.


0 commentaires

6 Réponses :


1
votes

Vous ne pouvez pas le faire via JavaScript, vous devez avoir besoin d'implémentation côté serveur.

Voici le SO POST qui devrait aider:
Autoriser l'utilisateur de télécharger de mon site via Response.writefile ( )


0 commentaires

9
votes

Depuis que vous avez marqué cela .net, je dirais que c'est votre meilleure solution:

Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf");
Response.WriteFile(Server.MapPath("~/files/myFile.pdf"));
Response.Flush();
Response.Close();


0 commentaires

1
votes

1 commentaires

Le code requis de l'article: réponse.Appendheader ("disposition de contenu", "pièce jointe; nom_file =" + nom);



3
votes

Modifiez le type de contenu en applications / octet-flux. Vous pouvez trouver cependant que certains navigateurs déduiront de l'extension de fichier qu'il doit s'ouvrir en PDF avec votre visualiseur PDF préféré.

Response.AppendHeader( "content-disposition", "attachment; filename=" + name );


0 commentaires

14
votes

Étant donné que votre édition indique que vous utilisez php, voici comment faire la même chose en PHP:

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


2 commentaires

Je veux activer cette chose pour tous les PDF sur le site, pas pour un fichier PDF spécifique


Il est utile d'inclure également la taille du fichier ou le navigateur dira probablement quelque chose «inconnu» pour la taille / l'heure à télécharger. en-tête ('"Longueur de contenu: 12345');



0
votes

Si vous obtenez une erreur de fichier corrompue, essayez ceci: xxx

$ fichier est le chemin ou URL de la fichier.


0 commentaires