bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Streammare da servlet / jsp / others un file e dargli un mime type e un nome corretti

Il problema
Voglio inviare al client (il browser, nel nostro modello classico), un file. Ma questo file deve avere un nome preciso (il che significa che se lo voglio salvare, il nome del file deve essere, in automatico, quello che dico io) e che il browser riconosca il formato e, al limite, lo apra con il plugin corretto (ad esempio: invio un doc e voglio che explorer lo riconosca e lo apra con word).


Le specifiche
Non vi tedio con le RFC del protocollo piu' di quel che serve.
Vi basti sapere che:
1) nella RFC dell'HTTP (RFC 2616) si dice che esiste un header chiamato "Content-Disposition"
2) nella RFC di questo header particolare (RFC 2183: Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field) si definisce il formato che l'header deve avere

Una letta veloce a questi due docs non fara' di certo male a nessuno.. :)

Il codice
HttpServletResponse response = ..;

// Setto allegramente il mime type che voglio inviare;

// questo dice al browser che "tipo" di file stà per ricevere
response.setContentType("application/pdf");

// Setto allegramente l'header di cui sopra,

// con il nome del file che voglio impostare io
response.setHeader("Content-Disposition", "attachment;filename=nome-del-file.pdf");

// Sparo fuori il mio contenuto come preferisco

...


Ed il gioco è fatto!

Precedente
Commenti
Nessun commento. Vuoi essere il primo.