Pessoal, gostaria de saber se tem como criar um “arquivo” na memória do servidor e enviar para o cliente.
tipo…
a partir de um objeto, pegar as informações colocar, nesse arquivo na memória e enviar para o cliente.
Pessoal, gostaria de saber se tem como criar um “arquivo” na memória do servidor e enviar para o cliente.
tipo…
a partir de um objeto, pegar as informações colocar, nesse arquivo na memória e enviar para o cliente.
Bom… a pergunta acima consegui resolver seguinte forma:
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition:", "attachment; filename=meuArquivo.txt");
ServletOutputStream sos = response.getOutputStream();
sos.println(conteudo); //conteudo será a string ou qualquer outra forma que você quer enviar!
sos.flush();
sos.close();
Só que…
Está gerando uma exceção depois que roda o código, mas o arquivo é enviado normalmente…
Servlet.service() for servlet jsp threw exception 13:23:26,905 [http-80-Processor25]
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:596)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:186)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:117)
at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:172)
at java.io.PrintWriter.flush(PrintWriter.java:270)
at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:174)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:885)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:458)
.......
Alguém saberia porque está dando esta execção?!