2010-02-23 4 views
5

Ich habe ASP.NET-Seite mit einem iFrame für die Anzeige einiger PDF-Berichte auf dieser Seite. Wenn der Benutzer den Berichtstyp aus der Dropdown-Liste auswählt, füge ich die erforderlichen Berichtsdaten in die ASP.NET-Sitzung ein und ändere das Attribut "src" des iFrame in die .ashx-Moduladresse, die den PDF-Bericht generiert. Aber wenn Adobe glug-in zum Anzeigen von .pdf-Dateien im Browser nicht installiert ist, schlägt der Browser vor, die Berichtsdatei zu speichern, und der Name der vorgeschlagenen Datei lautet "HandlerName.ashx". Aber ich möchte den Browser vorgeschlagen, um die Datei mit dem Namen "Report.pdf" zu speichern. Darf ich das machen? Gibt es Workarounds?Herunterladen von Dateien mit ASP.NET .ash-Modulen

+0

Achtung. Es muss eine generierte .pdf Datei angezeigt werden, falls das Adobe Plug-in installiert ist ... – w1z

Antwort

4

Try Inline-Content-Disposition, jedoch muss ich dies überprüfen:

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

Mike, Es ist großartig. Vielen Dank von Kharkov, GlobalLogic. Мир тесен;) – w1z

+0

:), aber soweit ich weiß, wird das nicht funktionieren ... А кто ты конкртейней? –

+0

Ich würde ein bisschen mit dieser Lösung spielen, aber scheint, dass es nicht funktioniert ... "тісніше немає вже куди: D" –

7

Fügen Sie den folgenden Header in Ihrer Ashx-Datei:

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

+1 um schneller zu sein :) – Diadistis

+0

In diesem Fall schlägt der Browser vor, die Datei herunterzuladen, wenn das Adobe Plug-in installiert ist ... – 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();