2011-09-12 17 views
6

Sto scaricando un file excel nel metodo di C# azione i reutrns un FileResult, come questo:ASP.NET MVC: Il download di un file excel

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

Se navigando manualmente l'URL che corrisponde con quanto sopra metodo, quindi ottengo la rappresentazione renderizzata del file. Il file non verrà scaricato con un comando Salva come.

C'è un modo per forzare il download a verificarsi tramite Salva come -dialog?

-pom-

+0

Stai vedendo questo accada in un browser specifico? E perché non stai usando il tipo MIME per i file Excel? –

+0

Ciao Charles, hai ragione, questo succede solo con Opera. Ora ho provato con FF e Safari, lì ottengo una finestra di dialogo di salvataggio. – Pompair

risposta

5

Ho la sensazione che si stia verificando questo comportamento a causa del tipo di supporto che si sta restituendo.

provare a cambiare il tipo di supporto a application/vnd.ms-excel in questo modo:

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

puoi anche usare questo se è un excel 2010 (xslx): application/vnd.openxmlformats-officedocument.spreadsheetml.sheet – Iridio

8

Normalmente, quando si specifica un nome di file per il metodo File si aggiunge automaticamente un'intestazione Content-Disposition in modo che la finestra di dialogo Salva-come mostra sempre. Quindi sono un po 'sorpreso quando dici che il tuo codice non funziona. Si potrebbe anche provare a impostare manualmente questa intestazione:

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

Typo è lì dentro, deve essere "Content-Disposition" –

+0

@Jared Peless, sì, l'ho appena notato e risolto. –

4

Potete provare questo:

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

Spero che questo aiuti.

Problemi correlati