1、 特地在网上下载了个支持下载时候显示中文文字的JspSmartUpload组件:http://download.csdn.net/detail/xuan6251237011/7081923
2、关于JspSmartUpload组件中各种方法的说明可参考:http://www.knowsky.com/3136.html
3、上传篇:
上传页面index.jsp(将编码方式设定为GBk或者gb312,设定为utf-8还是会有乱码出现),同时要在tomcat的webapps下本项目根目录下建一个名为“upload“的文件夹:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title></title>
</head>
<body>
<p> </p>
<p align="center">上传文件选择</p>
<FORM METHOD="POST" ACTION="do_upload.jsp"
ENCTYPE="multipart/form-data">
<input type="hidden" name="TEST" value="good">
<table width="75%" border="1" align="center">
<tr>
<td><div align="center">1、
<input type="FILE" name="FILE1" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">2、
<input type="FILE" name="FILE2" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">3、
<input type="FILE" name="FILE3" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">4、
<input type="FILE" name="FILE4" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="上传它!">
</div></td>
</tr>
</table>
</FORM>
</body>
</html>
上传处理页面do_upload.jsp:
<%@ page language="java" import="java.util.*,com.jspsmart.upload.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<%
//新建一个SmartUpload对象
SmartUpload su=new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限制
//1、限制每个上传文件的最大长度
su.setMaxFileSize(10000);
//2、限制总上传数据的长度
su.setTotalMaxFileSize(20000);
//3、设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件
su.setAllowedFilesList("doc,txt");
//4、设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件
su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
//上传文件
su.upload();
//将上传文件全部保存到指定目录
int count=su.save("/upload");
out.println(count+"个文件上传成功!<br>");
//利用Request对象获取参数之值
out.println("TEST="+su.getRequest().getParameter("TEST")+"<br><br>");
//逐一提取上传文件信息,同时可保存文件
for(int i=0;i<su.getFiles().getCount();i++){
com.jspsmart.upload.File file=su.getFiles().getFile(i);
//若文件不存在则继续
if(file.isMissing())continue;
//显示当前文件信息
out.println("<table border=1>");
out.println("<tr><td>表单项名(FieldName)</td><td>"+file.getFileName()+"</td></tr>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" +file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
// 将文件另存
// file.saveAs("/upload/" + myFile.getFileName());
// 另存到以WEB应用程序的根目录为文件根目录的目录下
file.saveAs("/upload/" + file.getFileName(), su.SAVE_VIRTUAL);
// 另存到操作系统的根目录为文件根目录的目录下
// file.saveAs("c:\\temp\\" + myFile.getFileName(),
//su.SAVE_PHYSICAL;
}
%>
</body>
</html>
4、下载篇:
下载页面download.jsp,实际的逻辑可以根据需要自己改:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title></title>
</head>
<body>
<a href="do_download.jsp">点击下载</a>
</body>
</html>
处理页面do_download.jsp,在tomcat'服务器下要有upload这个文件夹,而且不能出现其他html标签之类的,否则会导致数据流传到服务器时解析不了:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title></title>
</head>
<body>
<a href="do_download.jsp">点击下载</a>
</body>
</html>
当然,你要在MyEclipse或者其他开发工具中引入你下载的JspSmartUpload.jar的jar包。
有关于使用解决上传下载文件中出现的乱码,个人觉得这里讲得不错: http://www.2cto.com/kf/201305/214381.html