使用jspSmartUpload的下载文件的经验教训

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

,昨天晚上用jspSmartUpload下载文件,写了一个下载的页面(Download.jsp)如下:

<%@ page contentType="text/html;charset=gb2312" %>

<html>

<%@ page import="java.io.*,mail.util.Encoding" %>

<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</head>

<body>

<%

String filename =Encoding.encodingUnicode(request.getParameter("filename"));

mail.DbBase dbbase=mail.DbBase.getInstance();

String path=dbbase.getPath();

// 初始化

mySmartUpload.initialize(pageContext);

// 设定contentDisposition为null以禁止浏览器自动打开文件,

//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为

//doc时,浏览器将自动用word打开它。扩展名为pdf时,

//浏览器将用acrobat打开。

mySmartUpload.setContentDisposition(null);

// 下载文件

if(filename!=null){

mySmartUpload.downloadFile(path+filename);

}

%>

</body>

</html>

执行下载时,文件能正确下载,但是总是报错。

java.lang.IllegalStateException: getOutputStream() has already been called for this response

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

修改后问题解决。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有