解决办法:
执行下载的页面,在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方法冲突,所以会造成这种异常。