Quando viene fatta la request per il file .txt nella response bisogna settare un apposito "content type" ad esempio "application/octet-stream".Originariamente inviato da eziolink88
ho un problema con le pagine JSP. Devo dare la possibilità ad un utente di poter scaricare un file .txt. ma il browser me lo visualizza in una nuova finestra come posso forzare lo scaricamento del file .txt facendo comparire la finestra di download?
E si può fare in diversi modi. Se vuoi che qualunque txt venga sempre forzato al download puoi andare nel DD (web.xml) e impostare la mappatura del mimetype, cioè alla estensione txt associ application/octet-stream. Questa impostazione è "globale".
Se solo certi file .txt e solo in certe situazioni vuoi che siano forzati al download, ci sono altre soluzioni. Ad esempio un Filter che esamina la request e se c'è una query string es. "....bla/tuofile.txt?download" allora crei un wrapper della response in modo che imponga il content type e poi lo passi al filter chain.
Altrimenti dovresti fare una servlet, però nella pagina da cui scarichi il txt devi cambiare l'URL per scaricare il file, ad esempio mettere "download.do?file=blabla/tuofile.txt" e download.do lo associ alla servlet. La servlet imposta il content type e legge dal file e lo invia sulla response. Insomma devi fare un po' di lavoro.
La soluzione del filtro la trovo simpatica e interessante.