CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

数据流下载问题急啊急 在线等 解决问题开贴++++分

楼主badapple(坏小毛毛虫)2005-04-04 18:22:09 在 Java / J2SE / 基础类 提问

import   javax.servlet.http.HttpServletResponse;  
  import   javax.servlet.http.HttpServletRequest;  
  import   javax.servlet.jsp.PageContext;  
  import   javax.servlet.ServletException;  
  import   javax.servlet.ServletContext;  
  import   java.io.FileInputStream;  
  import   java.io.File;  
   
  //import   com.sys.exception.MyException;  
   
  public   class   WebDownload   {  
      private   HttpServletRequest   m_request;  
      private   HttpServletResponse   m_response;  
      private   ServletContext   m_application;  
   
    //   protected   HttpServletResponse   m_response;  
   
      public   WebDownload()   {  
      }  
   
      public   final   void   initialize(PageContext   pagecontext)  
              throws   ServletException  
      {  
              m_application   =   pagecontext.getServletContext();  
              m_request   =   (HttpServletRequest)pagecontext.getRequest();  
              m_response   =   (HttpServletResponse)pagecontext.getResponse();  
      }  
  public   void   downloadStringToFile(String   str,   String   contentType,   String   fileName)  
              throws   Exception  
      {  
              if(str   ==   null)  
                      throw   new   IllegalArgumentException("下载数据流不能为空.");  
   
              if(contentType   ==   null)  
                      m_response.setContentType("application/x-msdownload");  
              else  
              if(contentType.length()   ==   0)  
                      m_response.setContentType("application/x-msdownload");  
              else  
                      m_response.setContentType(contentType);  
   
              if(fileName   ==   null)  
                      m_response.setHeader("Content-Disposition",   "attachment;");  
              else  
              if(fileName.length()   ==   0)  
                      m_response.setHeader("Content-Disposition",   "attachment;");  
              else  
                      m_response.setHeader("Content-Disposition",   "attachment;   filename="   +   fileName);  
   
              byte   abyte0[]   =   str.getBytes();  
              m_response.setContentLength(abyte0.length);  
              m_response.getOutputStream().write(abyte0,   0,   abyte0.length);  
      }  
  private   String   getFileName(String   s)  
      {  
              int   i   =   0;  
              i   =   s.lastIndexOf('/');  
              if(i   !=   -1)  
                      return   s.substring(i   +   1,   s.length());  
              i   =   s.lastIndexOf('\\');  
              if(i   !=   -1)  
                      return   s.substring(i   +   1,   s.length());  
              else  
                      return   s;  
      }  
  }  
  错误提示:java.net.ProtocolException:   Exceeded   stated   content-length   of:   '1206'   bytes  
  at   weblogic.servlet.internal.ServletOutputStreamImpl.checkCL(ServletOutputStreamImpl.java:220)  
  at   weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:170)  
  at   com.web.Functions.WebDownload.downloadStringToFile(WebDownload.java:69)  
  at   jsp_servlet._jsp.__wsrz_download._jspService(__wsrz_download.java:170)  
  at   weblogic.servlet.jsp.JspBase.service(JspBase.java:27)  
  at   weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1058)  
  at   weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:401)  
  at   weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:306)  
  at   weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5445)  
  at   weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:780)  
  at   weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3105)  
  at   weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2588)  
  at   weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)  
  at   weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)  
   
  文件好象大于1024BYTE就报这个错误,小于的话   就500错误   急啊  
  JSP是这样写的  
  if(status)  
  {  
  //createxml.setFileSavePath(NSRXXPATH);  
  createxml.setQYSBBH(QYSBBH);  
  createxml.setMXXX(resultArray);  
  try  
  {  
  fileName     =   createxml.getFileName();  
  System.out.println(fileName);  
  streamContent   =   createxml.getXMLContent();  
   
  System.out.println(streamContent);  
  }catch(Exception   e)  
  {  
  outputString   =   e.toString();  
  status   =   false;  
  }  
  }  
  if(status)  
  {  
  download.initialize(pageContext);  
  download.downloadStringToFile(streamContent,   "application/x-msdownload",   fileName);  
   
  }  
  else  
  {  
  out.println(outputString);  
  }  
  %> 问题点数:0、回复次数:8Top

1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-04-04 18:29:45 得分 0

不能大于1024  
   
  你只能在  
  byte   abyte0[]   =   str.getBytes();  
  if(abyte0.length>1024)  
    ...  
  分成多个数组传递Top

2 楼ysbcg(Hummer)回复于 2005-04-04 18:30:31 得分 0

你发出的文件的大小比你在http头中的content-length长了,检查一下你的文件长度对不对。Top

3 楼zhutouzip(醒了的鸟)回复于 2005-04-04 18:34:26 得分 0

用response.setContentLength(length)设置一下你的响应头看看!Top

4 楼badapple(坏小毛毛虫)回复于 2005-04-04 19:28:01 得分 0

TO   zhutouzip   我上面应该设置了response.setContentLength(length)的啊Top

5 楼badapple(坏小毛毛虫)回复于 2005-04-04 19:29:51 得分 0

TO   ysbcg   怎么检查文件长度对不对啊?我是新手   请多多指教啊Top

6 楼badapple(坏小毛毛虫)回复于 2005-04-04 22:47:47 得分 0

顶上去     我现在把response.setContentLength(length)去掉了就可以了   但是生成的XML文件前面会多出一写空行   这是怎么回事?Top

7 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2005-04-05 09:04:01 得分 0

顶一下!Top

8 楼hongyan2004(spring+hibernate)回复于 2005-04-05 19:33:44 得分 0

UPTop

相关问题

  • 可恶的udp数据流错误,急,急,急!!!!!
  • socket接收二进制数据流的问题!!(在线等待)
  • 哪儿有case工具下载,要支持对象建模和数据流图
  • 急!!!!SPCOMM如何接收大数据流,并将其还原成文件??
  • 急!如何监听并且重组网络中的TCP数据流?
  • 加急!我要画一个比较简单的数据流程图,如何画?(没有数据流程图的符号)
  • 加密数据流
  • 急!急!急!请问如何截住网络上传到本机的数据包或数据流?
  • 一个数据流转化成一个图片保存起来...大家帮忙看看.急急.
  • 哎,只好重提了::紧急:怎样将数据流中的数据转换为特定类型的数据???

关键词

  • servlet
  • application
  • null
  • setcontentlength
  • pagecontext
  • abyte
  • response
  • setheader
  • httpservletresponse
  • setcontenttype

得分解答快速导航

  • 帖主:badapple

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo