2010-02-23 3 views
5

J'ai une page ASP.NET avec une iframe pour afficher certains rapports pdf sur cette page. Lorsque l'utilisateur sélectionne le type de rapport dans la liste déroulante, j'ajoute les données de rapport nécessaires dans la session ASP.NET et change l'attribut "src" de l'iframe en adresse du module .ashx qui génère le rapport .pdf. Mais si Adobe glug-in pour l'affichage des fichiers .pdf dans le navigateur n'est pas installé, le navigateur propose de sauvegarder le fichier de rapport et le nom du fichier proposé est "HandlerName.ashx". Mais je veux faire le navigateur proposé pour enregistrer le fichier avec le nom "Report.pdf". Puis-je faire ceci? Y a-t-il des solutions de contournement?Téléchargement de fichiers à l'aide de modules ASP.NET .ashx

+0

Attention. Il est nécessaire d'afficher le fichier .pdf généré si le plug-in Adobe est installé ... – w1z

Répondre

4

Essayez contenu disposition en ligne, mais je dois vérifier:

Response.ContentType = "application/pdf"; 
Response.AppendHeader("content-disposition", "inline; filename=" + name); 
+0

Mike, c'est bien. Merci de Kharkov, GlobalLogic. Мир тесен;) – w1z

+0

:), mais pour autant que je sache, cela ne fonctionnera pas ... А кто ты конкртейней? –

+0

Je voudrais jouer un peu avec cette solution, mais il semble que cela ne fonctionne pas ... "тісніше немає вже куди: D" –

7

Ajoutez l'en-tête suivant dans votre ashx fichier:

context.Response.AddHeader("content-disposition", "attachment;filename=PUTYOURFILENAMEHERE.pdf"); 
context.Response.ContentType = "application/pdf"; 
+0

+1 pour être plus rapide :) – Diadistis

+0

Dans ce cas, le navigateur propose de télécharger le fichier lorsque le plug-in Adobe est installé ... – w1z

3
Use  


Response.Clear(); 
Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Disposition", "attachment; filename=Report.PDF");            
Response.WriteFile(Server.MapPath("~/YourPath/Report.PDF")); 
Response.End(); 
Questions connexes