2010-02-23 5 views
5

Ho una pagina ASP.NET con un iframe su di essa per visualizzare alcuni rapporti pdf su questa pagina. Quando l'utente seleziona il tipo di rapporto dal menu a discesa, aggiungo il necessario per i dati del rapporto nella sessione ASP.NET e cambio l'attributo "src" dell'indirizzo iframe in .ashx che genera il rapporto .pdf. Ma se Adobe glug-in per visualizzare i file .pdf nel browser non è installato, il browser propone di salvare il file di report e il nome del file proposto è "HandlerName.ashx". Ma voglio fare il browser proposto per salvare il file con il nome "Report.pdf". Posso farlo? Ci sono soluzioni alternative?Download di file usando i moduli .ashx di ASP.NET

+0

Attenzione. È necessario visualizzare il file .pdf generato nel caso in cui sia installato il plug-in Adobe ... – w1z

risposta

4

Prova in linea Content-Disposition, però devo controllare questo:

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

Mike, è ottimo. Grazie da Kharkov, GlobalLogic. Мир тесен;) – w1z

+0

:), ma per quanto ne so, questo non funzionerà ... А кто ты конкртейней? –

+0

Vorrei giocare un po 'con questa soluzione, ma sembra che non funzioni ... "тісніше немає вже куди: D" –

7

Aggiungere la seguente intestazione nel ashx-file:

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

+1 per essere più veloce :) – Diadistis

+0

In questo caso il browser propone di scaricare il file quando è installato il plug-in Adobe ... – 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();