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>
下载页面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>
<%@ 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>
有关于使用解决上传下载文件中出现的乱码,个人觉得这里讲得不错: http://www.2cto.com/kf/201305/214381.html