2012-12-18 10 views
8

Ho una pagina che invia un file binari, pdf, word o excel al browser web. In Firefox e IE sia apre una finestra di dialogo che chiede che cosa whant a che fare con questo file, "aperto" o "Salva"Come forzare Chrome ad aprire una "finestra di dialogo di apertura file" durante il download di un file in codice ASP.NET codebehind?

enter image description here

ma Chrome salvare direttamente sul tuo computer.

E 'possibile fare fare in modo che Chrome ti chieda cosa vuoi fare con questo file, inserendo alcuni metadati nella risposta web prima di inviare il file al browser?

risposta

9

Non è possibile forzare Chrome per visualizzare la finestra di salvataggio. L'utente deve modificare tale comportamento sulla configurazione di Chrome (impostazioni avanzate).

enter image description here

+0

dove sarebbe tale impostazione essere? –

+0

@ValentinDespa ha aggiornato la risposta. – daniloquio

+0

Ma chiedere all'utente di spuntare questa casella di controllo non è pratico, quindi c'è qualche altra soluzione per questo? –

0

è necessario inviare alcune intestazioni modo che il browser sa come gestire la cosa che stai streaming come:

Response.ContentType 
Content-Disposition, application,and 
filename=" + FileName 

che costringerà il download. Fare riferimento anche questo link per maggiori informazioni:

http://www.devtoolshed.com/aspnet-download-file-web-browser

Grazie

0

forse sarà utile

System.String filePath = "c:\\tempFile.pdf" 
System.IO.FileInfo fileInfo = new FileInfo(filePath); 

System.Web.HttpContext context = System.Web.HttpContext.Current; 
System.Web.HttpResponse response = context.Response; 
response.Clear(); 
response.ClearHeaders(); 
response.ClearContent(); 
response.ContentType = "application/pdf"; 
response.AppendHeader("content-type", "application/pdf"); 
response.AppendHeader("content-length", fileInfo.Length.ToString()); 
response.AppendHeader("content-disposition", String.Format("attachment; filename={0}.pdf", outputFileName)); 
response.TransmitFile(filePath); 
response.Flush(); // this make stream and without it open chrome save dialog 
context.ApplicationInstance.CompleteRequest(); // send headers and c# server-side code still continue 

System.IO.File.Delete(filePath); // clean cache here if you need 

response.End(); 
Problemi correlati