2010-02-23 30 views
5

Tengo una página ASP.NET con un iframe para mostrar algunos informes en esta página. Cuando el usuario selecciona el tipo de informe desde el menú desplegable, agrego el necesario para los datos del informe en la sesión ASP.NET y cambio el atributo "src" del iframe a la dirección del módulo .ashx que genera el informe .pdf. Pero si Adobe glug-in para ver archivos .pdf en el navegador no está instalado, el navegador propone guardar el archivo de informe y el nombre del archivo propuesto es "HandlerName.ashx". Pero quiero hacer que el navegador propuesto guarde el archivo con el nombre "Informe.pdf". ¿Puedo hacer esto? ¿Hay alguna solución?Descargando archivos usando ASP.NET .ashx modules

+0

atención. Es necesario mostrar el archivo .pdf generado en caso de que esté instalado el complemento Adobe ... – w1z

Respuesta

4

Try línea Content-Disposition, sin embargo tengo que comprobar esto:

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

Mike, es genial. Gracias de Kharkov, GlobalLogic. Мир тесен;) – w1z

+0

:), pero hasta ahora sé que esto no funcionará ... А кто ты конкртейней? –

+0

Jugaría un poco con esta solución, pero parece que no funciona ... "тісніше немає вже куди: D" –

7

Añadir el siguiente encabezado en su ashx-archivo:

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

+1 por ser más rápido :) – Diadistis

+0

En este caso, el navegador propone descargar el archivo cuando se instala el complemento 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();