以下内容转自:http://cheerfulmao.bokee.com/4465982.html
下载页面download.htm:
<pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Download.htm</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<a href="./download.jsp">点击下载</a>
</body>
</html>
</pre>
下载实现:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="com.jspsmart.upload.*" %>
<%
System.out.println("Download.jsp start!");
String strFileName="D:\\Xfwj.zip";
com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
mySmartUpload.initialize(pageContext); System.out.println("initialize success!");
mySmartUpload.setContentDisposition(null);
mySmartUpload.downloadFile(strFileName);
%>
附:
利用上述代码下载TXT文件时,出现如下错误:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
解决方法有如下几种:
(1)修改jspSmartUpload.jar包
(2)采用Servlet替代download.jsp
public void perform(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload su = new SmartUpload();
su.initialize(config,request,response);
su.setContentDisposition(null);
String strDownloadFilename = "D:\\AA.txt";
try {
su.downloadFile(strDownloadFilename);
} catch (ServletException e) {
System.out.println("ServletException");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件不存在!");
e.printStackTrace();
} catch (SmartUploadException e) {
System.out.println("SmartUploadException");
e.printStackTrace();
}
}