Tengo una funcion que encontre aqui en el cual la paso el nombe del archivo y lo descarga ya sea imagen texto . esta es la funcion me descarga pero me da un error:
Funcion
Código PHP:
<!--contents of download.jsp-->
<%@ page import="java.util.*,java.io.*"%>
//lees el archivo claro que por aqui aplicas algunos filtros de seguridad y esas cosas
//Le paso asi: ?file=texto.txt
File f = new File ("carpeta/"request.getParameter("file") );
//aqui seleccionas el content type (puede ser excel/word/powerpoint etc..)
response.setContentType ("text/plain");
//aqui seleccionas el nombre con el cual el usuario lo recibira
response.setHeader ("Content-Disposition", "attachment; filename=\""+request.getParameter("file")+"\"");
//optenemos el nombre del archivo
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
//leemos el archivo para mandarselo al cliente
InputStream in = new FileInputStream(name);
ServletOutputStream outs = response.getOutputStream();
int bit = 256;
int i = 0;
try {
while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}
//System.out.println("" +bit);
}catch (IOException ioe) {
ioe.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
Código:
Por lo que veo el error esta aqui, 13:20:33 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() para servlet jsp lanzó excepción java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta at org.apache.catalina.connector.Response.getWriter(Response.java:607) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196) at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125) at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118) at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:179) at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116) at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76) at org.apache.jsp.jsp.Download_jsp._jspService(Download_jsp.java:106) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
ServletOutputStream outs = response.getOutputStream();
pero no entiendo que es, o como solucionar.
Alguna solucion?
Existe alguna otra forma de solucionar esto?