2013-02-11 13 views
13

Sto emettendo un file PDF in un browser Web (IE8) HttpContext.Response.writefile(fileName) e funziona benissimo. Quando provo a salvare il file, mi assegnerà il nome del gestore ashx come predefinito. Mi piacerebbe davvero passare il vero nome.Gestore di PDF: content-disposition nome file

Ho provato ad aggiungere informazioni di intestazione come segue:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name); 

e funziona, ma io non voglio che l'utente dovrà scegliere tra aprire e salvare, voglio che il file da aprire normalmente e se l'utente sceglie di salvarlo, quindi la finestra di dialogo gli darà il nome file predefinito.

ho provato anche:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name); 

O semplicemente, come Scott Hanselman suggested in his blog.

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name); 

Nessuno di quelli lavora per me. Qualcuno ha qualche idea?

risposta

2

In caso di INLINE, sembra che Internet Explorer stia utilizzando l'ultimo parametro nell'URL per creare il nome file. Per esempio, se l'URL è http://doc.com/131231231 IE vi verrà chiesto di salvare il file come 131231231.pdf Se avete bisogno di un nome di file, ad esempio foo_131231231.pdf si può incidere l'IE utilizzando questo URL: http://doc.com/foo_131231231 Si può soffrire di cambiare la tua app si aspetta un po 'di brutto parametro, ma alla fine la tua app funzionerà come previsto.

2

Mi sono imbattuto in questo problema. Quello che mi ha aiutato è stato quello di impostare anche il ContentType a application/pdf (invece di application/x-pdf, che è obsoleto)

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");