92

Sto restituendo un flusso in qualche risposta impostando l'intestazione content-type appropriata. Il comportamento che sto cercando è questo:Come impostare il nome file della risposta senza forzare la finestra di dialogo saveas

  • Se il browser è in grado di rendere il contenuto di un determinato tipo di contenuto allora dovrebbe visualizzarlo nella finestra del browser.

  • Se il browser non sa come eseguire il rendering del contenuto, deve visualizzare la finestra di dialogo saveas in cui il nome file deve essere fornito nella risposta.

Il problema che, se ho impostato l'intestazione Content-Disposition con:

"attachment; filename =" myfile.txt ""

il browser visualizzerà sempre i savesas dialogo.

Se non si imposta Content-Disposition il nome file utilizzato nella finestra di dialogo saveas è quello nell'url che non funziona nel mio caso.

Ho anche provato a impostare la disposizione del contenuto su Inline ma il risultato è lo stesso.

risposta

128

Il modo corretto potrebbe essere:

Content-Disposition: inline; filename="myfile.txt"

+6

io non sono sicuro di cosa si intende per 'non ampiamente supportato' indietro quando hai scritto questa risposta, e che desideri che aveva dato fatti invece di FUD . Ho appena eseguito il test in IE 6, IE 8, Chrome moderno e Firefox moderno, e funziona su tutti; per quanto posso dire, è assolutamente sicuro usarlo al giorno d'oggi. –

+0

Non funziona con FireFox 37.0.2 e Internet Explorer 11.0.18. Mi viene presentata una finestra di dialogo Salva come. Chrome funziona però. – angularsen

+2

In realtà funziona sia in Firefox 37.0.2 che in IE 11.0.18 (appena testato). Probabilmente stai utilizzando un Content-Type che il tuo browser non può visualizzare in linea. – Patonza

3

Non sono sicuro che sia possibile per impostazione predefinita. Per motivi di sicurezza, il browser non invia tutti i tipi di contenuto che può gestire, ma solo alcuni Accept-Encoding, il che non aiuta molto nel tuo scenario.

Forse è possibile chiedere all'utente cosa preferisce e archiviare tali informazioni nel proprio profilo.