2011-09-12 18 views
6

estoy descargando un archivo de Excel en el método C# acción de los reutrns un FileResult, como este:ASP.NET MVC: La descarga de un archivo de Excel

return File(bindata, "application/octet-stream", "mytestfile.xls"); 

Cuando navego manualmente a la dirección URL que se corresponde con el anterior método, entonces obtengo la representación representada del archivo. El archivo no se descargará con un diálogo Guardar como.

¿Hay alguna manera de forzar la descarga a través de Guardar como -diálogo?

-pom-

+0

¿Está viendo que esto ocurra en un navegador específico? ¿Y por qué no estás usando el tipo MIME para archivos de Excel? –

+0

Hola Charles, tienes razón, esto solo ocurre con Opera. Ahora probé con FF y Safari, allí recibí un diálogo para guardar. – Pompair

Respuesta

5

Tengo la sensación de que está obteniendo este comportamiento debido al tipo de medio que está devolviendo.

trate de cambiar el tipo de medio application/vnd.ms-excel así:

return File(bindata, "application/vnd.ms-excel", "mytestfile.xls"); 
+1

también puede usar esto si es un excel 2010 (xslx): application/vnd.openxmlformats-officedocument.spreadsheetml.sheet – Iridio

8

Normalmente, cuando se especifica un nombre de archivo para el método File se añade automáticamente una cabecera Content-Disposition para que el diálogo de Guardar Como muestra siempre. Así que estoy un poco sorprendido cuando dice que su código no funciona. También podría tratar de establecer manualmente esta cabecera:

Response.AppendHeader("Content-Disposition", "attachment; filename=mytestfile.xls"); 
+0

Typo está allí, debe ser "Content-Disposition" –

+0

@Jared Peless, sí, acabo de notarlo y lo solucioné. –

4

¿Se puede probar esto:

return new FileContentResult(bindata, "application/vnd.ms-excel") 
      { 
       FileDownloadName = "mytestfile.xls") 
      }; 

Espero que esto ayude.

Cuestiones relacionadas