这是部分代码: 希望高手赐教
String filepath = filemap.get("filepath").toString();
String filename = filemap.get("filename").toString();
// 开始下载
File file4 = null;
FileInputStream fis1 = null;
ServletOutputStream ouputStream = null;
try {
response.reset();
ouputStream = response.getOutputStream();
file4 = new File(filepath+filename);
fis1=new FileInputStream(file4);
int len1 = (int)file4.length() ;
//response.setContentType("application/zip");
response.setContentType("application/octet-stream"); response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Content-disposition", "attachment;filename=" +
URLEncoder.encode(filename,"utf-8"));
//response.setContentLength(Integer.parseInt(file4.length() + ""));
response.setHeader("Content-Length",file4.length() + ""); String range = request.getHeader("Range");
if (range != null) {
int middleNum = range.indexOf('-');
range = range.substring("bytes=".length(), middleNum);
//range = range.substring("bytes=".length(), range.length() - 1);
//String[] str = range.split("-");
/*long lon1 = Long.parseLong(str[0]);
long lon2 = Long.parseLong(str[1]);
long start1 = lon1 - lon2;*/
long start1 = Long.parseLong(range);
fis1.skip(start1);
long l = file4.length();
String contentRange = new StringBuffer("bytes ").append(start1)
.append("-").append(l - 1).append("/").append(l)
.toString();
response.setHeader("Content-Range", contentRange);
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); }
int len = 0;
int tmp = 100*1024;
while (len < len1){
byte[] input = new byte[tmp];
if (len + tmp >len1){
input = new byte[(len1 - len)];
}
if (fis1.read(input, 0, input.length) != -1){
len = len + input.length;
ouputStream.write(input);
ouputStream.flush();
}
}
}
String filepath = filemap.get("filepath").toString();
String filename = filemap.get("filename").toString();
// 开始下载
File file4 = null;
FileInputStream fis1 = null;
ServletOutputStream ouputStream = null;
try {
response.reset();
ouputStream = response.getOutputStream();
file4 = new File(filepath+filename);
fis1=new FileInputStream(file4);
int len1 = (int)file4.length() ;
//response.setContentType("application/zip");
response.setContentType("application/octet-stream"); response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Content-disposition", "attachment;filename=" +
URLEncoder.encode(filename,"utf-8"));
//response.setContentLength(Integer.parseInt(file4.length() + ""));
response.setHeader("Content-Length",file4.length() + ""); String range = request.getHeader("Range");
if (range != null) {
int middleNum = range.indexOf('-');
range = range.substring("bytes=".length(), middleNum);
//range = range.substring("bytes=".length(), range.length() - 1);
//String[] str = range.split("-");
/*long lon1 = Long.parseLong(str[0]);
long lon2 = Long.parseLong(str[1]);
long start1 = lon1 - lon2;*/
long start1 = Long.parseLong(range);
fis1.skip(start1);
long l = file4.length();
String contentRange = new StringBuffer("bytes ").append(start1)
.append("-").append(l - 1).append("/").append(l)
.toString();
response.setHeader("Content-Range", contentRange);
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); }
int len = 0;
int tmp = 100*1024;
while (len < len1){
byte[] input = new byte[tmp];
if (len + tmp >len1){
input = new byte[(len1 - len)];
}
if (fis1.read(input, 0, input.length) != -1){
len = len + input.length;
ouputStream.write(input);
ouputStream.flush();
}
}
}
解决方案 »
- 编程好难
- xfire做客户端调用服务器出错!
- HttpSessionListener 调用 spring 中服务类的实现方法出现session错误。
- 求救:soap消息中的方法及参数的前缀是如何加上的?
- 关于 appfuse(hibernate+spring)多表查询
- 高分求教:工作流引擎哪个好用?
- 关于session.save()
- 100分。。。请教一个问题!
- 一个RMI的例程在JBUILDER中报错,不只是什么原因???
- 诸位老大,刚学JBuilder,用哪一种版本比较好?
- 做一个在线视频教学平台的项目 迷茫阿 。。。。诸位高手 给点建议
- 在本地计算机无法开启computerbrowser服务 错误1068:依存服务或组无法启动
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
at com.huateng.struts.action.TransitionAction.safeExecute(TransitionAction.java:59)
at com.huateng.struts.action.SafeAction.execute(SafeAction.java:74)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at net.sf.struts.saif.ActionInterceptorChainImpl.doIntercept(ActionInterceptorChainImpl.java:131)
at com.huateng.struts.action.validator.FormValidator.doIntercept(FormValidator.java:84)
at net.sf.struts.saif.ActionInterceptorChainImpl.doIntercept(ActionInterceptorChainImpl.java:127)
at net.sf.struts.saif.RequestProcessorHelper.processInterceptors(RequestProcessorHelper.java:425)
at net.sf.struts.saif.SAIFRequestProcessor.processActionPerform(SAIFRequestProcessor.java:83)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at as.huateng.struts.util.SignOnFilter.doFilter(SignOnFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)2011-12-12 11:47:33 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at as.huateng.struts.util.SignOnFilter.doFilter(SignOnFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)