关于jspSmartUpload下载文件,出现getOutputStream() has already been..

解决办法:

    执行下载的页面,在Java脚本范围外(即<% ... %>之外),不要包含HTML代码、空格、回车或换行等字符,有的话将不能正确下载。不信的话,可以在上述源码中%><%之间加入一个换行符,再下载一下,保证出错。因为它影响了返回给浏览器的数据流,导致解析出错。

       

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="UpLoad.*"%>
<jsp:useBean id="SU" scope="page" class="UpLoad.SmartUpload" />

<%

String name=request.getParameter("Name").trim();

 %>

 

<%
   // 初始化
     SU.initialize(pageContext);
 //SU.service(request,response);
 // 设定contentDisposition为null以禁止浏览器自动打开文件,
 //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
 //doc时,浏览器自动用Word打开它。扩展名为pdf时,浏览器用Acrobat打开。自动进行关联。
  SU.setContentDisposition(null);
  //下载文件
  SU.downloadFile(name);
   out.clear();
     out=pageContext.pushBody();
 
%>

  

 

//注意了在代码中有两个重要的表达式   out.clear();    out=pageContent.pushBody();  加这两个表达式的原因是:由于jsp container在处理完成请求后会调用releasePageContet方法释放所用的PageContext object,并且同时调用getWriter方法,由于getWriter方法与在jsp页面中使用流相关的getOutputStream方法冲突,所以会造成这种异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值