Comment puis-je retourner un fichier pdf à partir d'une requête web dans ASP.NET?
Tout simplement, je voudrais quelqu'un pour être en mesure de cliquer sur un lien, et d'obtenir un d'un emploi du temps pdf. Nous avons la bibliothèque pour créer des fichiers PDF, ce qui n'est pas un problème.
Nous avons pu générer un lien vers une page aspx, cette page générer le pdf, enregistrez le fichier pdf sur le système de fichiers, puis de Réponse.Redirection vers le pdf sauvegardée. Alors nous serions en quelque sorte à garder une trace de et de nettoyer le fichier PDF.
Puisque nous n'avons pas toujours besoin de garder ces données, ce que j'aimerais faire à la place, si possible, est d'avoir la page aspx générer le pdf, et de les servir directement à l'arrière comme une réponse à la demande initiale. Est-ce possible?
(Dans notre cas, nous allons à l'aide de C#, et nous voulons nous servir un fichier pdf de retour, mais il semble que toute solution serait probablement de travail .NET languages et retourné types de fichiers.)
- Copie exacte: stackoverflow.com/questions/177/...
- Connexes: stackoverflow.com/questions/1038707/...
- Pas dupe de la ci-dessus dans tous les sens.
- (Je savais que j'allais obtenir un couple de gens disent de fermer dupe, pointant vers ce type de question...c'est pourquoi j'ai inclus la deuxième phrase. J'aurais fait la première phrase. 🙂 )
Vous devez vous connecter pour publier un commentaire.
En supposant que vous pouvez obtenir un
byte[]
représentant votre PDF:Regarder comment le HTTP fonctionne. Le client (=navigateur) ne repose pas sur des extensions, il ne veut que le serveur renvoie un certain nombre de métadonnées avec le document.
Les métadonnées peuvent être ajoutées à la Réponse.AddHeader, et l'un des métadonnées de la ligne se compose de Nom et la Valeur.
Type de contenu est la propriété qui vous intéresse, et la valeur est de type MIME des données (étude: RFC1945 pour les en-têtes HTTP, google, type MIME).
Pour ordinale aspx pages (html, ....) la propriété 'text/html' (pas si trivial, mais pour cet exemple, c'est assez.). Si vous retournez JPG image, il peut avoir un nom 'image.gif" mais aussi longtemps que vous envoyez 'image/jpeg' dans le Type de Contenu, il est traité comme image JPG.
Le type de contenu pour le format pdf est "application/pdf".
Le navigateur va agir selon le comportement par défaut, par exemple, avec Adobe plug-in, il va afficher le PDF dans la fenêtre, si vous n'avez pas de plugin pour les PDF, il faut télécharger le fichier, etc..
- Tête Content-Disposition dit, ce que vous devriez faire avec les données. Si vous voulez explicitement au client de téléchargement HTML/PDF/que ce soit, et de ne pas l'afficher par défaut, la valeur 'pièce jointe' est ce que vous voulez. Il devrait avoir un autre paramètre, (comme suggéré par Justin Niessner), qui est utilisée dans le cas de quelque chose comme:
http://server/download.aspx?file=11 -> Content-Disposition: attachment;filename=file.jpg dit, comment le dossier doit être nommée par défaut.