大伙都到哪去了?????????????????? 而且为什么会抛下面的异常啊: 14:36:11,525 INFO [STDOUT] -----begin processing viewfile ... 14:36:32,719 INFO [STDOUT] ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error 14:36:32,769 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:373) 14:36:32,829 INFO [STDOUT] at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323) 14:36:32,859 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.writeBytes(OutputBuffer.java:401) 14:36:32,879 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.write(OutputBuffer.java:388) 14:36:32,969 INFO [STDOUT] at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:76) 14:36:32,999 INFO [STDOUT] at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:70) 14:36:33,019 INFO [STDOUT] at com.sdo.jmeis.ics.action.AcceptFileAction.downLoadFile(AcceptFileAction.java:147) 14:36:33,049 INFO [STDOUT] at com.sdo.jmeis.ics.action.AcceptFileAction.execute(AcceptFileAction.java:61) 14:36:33,080 INFO [STDOUT] at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) 14:36:33,100 INFO [STDOUT] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226) 14:36:33,130 INFO [STDOUT] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) 14:36:33,150 INFO [STDOUT] at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397) 14:36:33,180 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:697) 14:36:33,200 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) 和 14:36:34,251 ERROR [Engine] ApplicationDispatcher[/jmics] Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599) at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163) at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111) at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111) at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122) at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115) at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182) at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115) at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75) at org.apache.jsp.message.error_jsp._jspService(error_jsp.java:82) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename=" +form.getFileName());
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(form.getFileUrl());
try
{
int i;
while ((i=fileInputStream.read()) != -1)
{
out.write(i);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
fileInputStream.close();
}
下载后的文件却是乱码?(上传的文件正常)
这又该如何解决呢?
这时候你再刷新页面,当然又再执行一次下载了..要不你把action代码贴出来看看,看看你是怎么处理下载的.是用一个stream,还是直接连接到要下载的文件
HttpServletResponse httpServletResponse )
{
System.out.println( "-----begin processing viewfile ..." ) ;
HttpSession session = httpServletRequest.getSession() ;
UserContainer uc = ( UserContainer ) session.getAttribute( "user" ) ;
if ( uc == null )
{
return ( actionMapping.findForward( "timeout" ) ) ;
} DBTransaction transaction = null ;
FilesDAO fileDAO = null ;
try
{
String fileId = httpServletRequest.getParameter( "fileid" ) == null ? "0" : httpServletRequest.getParameter( "fileid" ).toString().trim() ;
String readerAccount = uc.getUser().getAccount() ;
String readerName = uc.getUser().getName() ; fileDAO = new FilesDAO() ;
FilesForm form = fileDAO.findFileById( Integer.parseInt( fileId ) ) ; transaction = new DBTransaction() ;
transaction.begin() ;
transaction.add( fileDAO ) ; byte[] f = FileUtil.readFileContent( form.getFileUrl() , form.getFileSize().intValue() ) ;
httpServletResponse.setContentType( "application/octet-stream" ) ;
httpServletResponse.addHeader( "Content-Disposition" , "attachment;filename=" + form.getFileName() ) ;
ByteArrayOutputStream byteOut = new ByteArrayOutputStream() ;
DataOutputStream out = new DataOutputStream( byteOut ) ;
for ( int z = 0 ; z < f.length ; z++ )
{
out.writeByte( f[ z ] ) ;
}
out.flush() ;
out.close() ; ServletOutputStream servletOut = httpServletResponse.getOutputStream() ;
byte[] buf = byteOut.toByteArray() ;
httpServletResponse.setContentLength( buf.length ) ;
servletOut.write( buf ) ;
servletOut.close() ; if ( form.getReceiverCount().intValue() > 1 )
{
if ( !StringUtil.isExisted( form.getReaderAccount() , readerAccount ) &&
!StringUtil.isExisted( form.getUnreadAccount() , readerAccount ) )
{
form.setReaderAccount( form.getReaderAccount() == null ? ( readerAccount + "," ) :
( form.getReaderAccount() + readerAccount + "," ) ) ;
form.setReaderName( form.getReaderName() == null ? ( readerName + "," ) :
( form.getReaderName() + readerName + "," ) ) ;
form.setReaderCount( new Integer( form.getReaderCount().intValue() + 1 ) ) ;
}
}
else
{
form.setReaderAccount( readerAccount + "," ) ;
form.setReaderName( readerName + "," ) ;
form.setReaderCount( form.getReceiverCount() ) ;
}
fileDAO.acceptFile( form ) ; transaction.end() ;
httpServletRequest.setAttribute( "fileid" , fileId ) ;
System.out.println( "-----end process." ) ;
}
catch ( Exception ex )
{
try
{
transaction.setRollBack() ;
transaction.end() ;
}
catch ( Exception dse )
{
dse.printStackTrace( System.out ) ;
}
ex.printStackTrace() ;
System.out.println( "-------------error--------" ) ;
httpServletRequest.setAttribute( "message" , "Error while performing finder. : " + ex.getMessage() ) ;
return ( actionMapping.findForward( "unknown-error" ) ) ;
}
return ( actionMapping.findForward( "acceptsuccessfully" ) ) ;
}
这就是源代码了,大家帮忙看看
而且为什么会抛下面的异常啊:
14:36:11,525 INFO [STDOUT] -----begin processing viewfile ...
14:36:32,719 INFO [STDOUT] ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
14:36:32,769 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
14:36:32,829 INFO [STDOUT] at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
14:36:32,859 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.writeBytes(OutputBuffer.java:401)
14:36:32,879 INFO [STDOUT] at org.apache.coyote.tomcat5.OutputBuffer.write(OutputBuffer.java:388)
14:36:32,969 INFO [STDOUT] at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:76)
14:36:32,999 INFO [STDOUT] at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:70)
14:36:33,019 INFO [STDOUT] at com.sdo.jmeis.ics.action.AcceptFileAction.downLoadFile(AcceptFileAction.java:147)
14:36:33,049 INFO [STDOUT] at com.sdo.jmeis.ics.action.AcceptFileAction.execute(AcceptFileAction.java:61)
14:36:33,080 INFO [STDOUT] at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
14:36:33,100 INFO [STDOUT] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
14:36:33,130 INFO [STDOUT] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
14:36:33,150 INFO [STDOUT] at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
14:36:33,180 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
14:36:33,200 INFO [STDOUT] at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
和
14:36:34,251 ERROR [Engine] ApplicationDispatcher[/jmics] Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599)
at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
at org.apache.jsp.message.error_jsp._jspService(error_jsp.java:82)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)