FileDownloadproblem

Hi
Iam trying to download the file when i click on the hyperlink after opening file when i click on any buton it is opening the file that i opened the previously
in java class i wrote the follwing code
public static void getdocument(HttpServletResponse response,
               String locationKey, String fileName) throws Exception {
          FileInputStream fis = null;
          String location = getLocation(locationKey);
          if (!location.endsWith("/"))
               location = location + "/";
          int index = fileName.lastIndexOf('.');
          String docType = fileName.substring(index + 1, fileName.length());
          String docName = fileName.substring(0, index);
          try {
               fis = new FileInputStream(location + fileName);
               int noOfBytes = fis.available();
               byte[] dataBytes = new byte[noOfBytes];
          fis.read(dataBytes);
               writeToServletOutputStream(response, docType, docName, dataBytes);
          } catch (FileNotFoundException f) {
          } finally {
               if (fis != null) {
                    fis.close();
     private static void writeToServletOutputStream(
               HttpServletResponse response, String docType, String docName,
               byte[] dataBytes) {
          response.setContentLength(dataBytes.length);
          if (docType.equalsIgnoreCase("xls")) {
               response.setContentType("application/vnd.ms-excel");
          } else if (docType.equalsIgnoreCase("doc")) {
               response.setContentType("application/vnd.msword");
          } else if (docType.equalsIgnoreCase("pdf")) {
               response.setContentType("application/pdf");
          } else {
               response.setContentType("application/octet-stream");
          try {
               response.setHeader("Content-Disposition", "attachment; filename="
                         + docName + "." + docType);
               response.setHeader("Pragma", "cache");
               response.setHeader("Cache-Control", "cache");
               response.setDateHeader("Expires", -1);
               ServletOutputStream sos = response.getOutputStream();
               sos.write(dataBytes);
               sos.flush();
               sos.close();
          } catch (IOException ioEx) {
               ioEx.printStackTrace();
          } catch (Exception ex) {
               ex.printStackTrace();
in action class iam calling as follows
FileUploadDownload.getdocument(response,submissionForm.getAbstractOrManuscript(),submissionForm.getSubmissionId()+submissionForm.getDownLoadFile());
and i'am calling this code in struts action class and iam getting the following error
ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
     at org.apache.catalina.connector.Response.getWriter(Response.java:599)
     at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
     at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
     at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:166)
     at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:158)
     at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:174)
     at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:198)
     at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:193)
     at org.apache.jsp.vClassicLayout$jsp._jspService(vClassicLayout$jsp.java:216)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
     at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
     at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
     at org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1061)
     at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:267)
     at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:249)
     at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:303)
     at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:523)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
     at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
     at java.lang.Thread.run(Thread.java:595)
2006-12-13 10:46:16,297 INFO [STDOUT] 10:46:16,297 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
     at org.apache.catalina.connector.Response.getWriter(Response.java:599)
     at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
     at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
     at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:166)
     at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:158)
     at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:174)
     at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:198)
     at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:193)
     at org.apache.jsp.vClassicLayout$jsp._jspService(vClassicLayout$jsp.java:216)
     at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
     at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
     at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
     at org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1061)
     at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:267)
     at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:249)
     at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:303)
     at org.apache.struts.action.RequestProcessor.processActionForward(RequestProcessor.java:401)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:523)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
     at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
     at java.lang.Thread.run(Thread.java:595)
Message was edited by:
k-@.

Similar Messages

Maybe you are looking for