您的位置:首页 > Web前端 > JavaScript

Web开发之JspSmartUpload实现文件上传下载

2014-03-22 16:25 991 查看
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.S***E_VIRTUAL);
    		// 另存到操作系统的根目录为文件根目录的目录下
    		// file.saveAs("c:\\temp\\" + myFile.getFileName(), 
    		//su.S***E_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: