一、写在前面

这篇文章主要是分享使用JspSamrtUpload实现多文件的上传下载功能,及使用Mysql数据库的 limit 函数实现文件显示列表的分页显示功能。

二、需要的jar包

下载JspSamrtUpload的jar包JspSamrtUploadUtf8.jar下载后把它复制到web的lib目录下即可。

三、关键代码

3.1 多文件上传前端代码 upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="layui/css/layui.css">
<title>上传下载文件</title>
<script type="text/javascript " src="js/jquery.js"></script>
<script type="text/javascript">
	$(document).ready(function(e){
		$("#button").click(function(e){
			var comp = "<br><input type='file' name='upload'/><br>";
			$("#files").append(comp);
		});
	});
</script>
<style type="text/css">
 form{
 	margin:60px;
 }
</style>
</head>
<body>
<br><br>
	<form class="layui-form" action="UploadwithServlet" method="post"
		enctype="multipart/form-data">
		<span id="files">
		<input type="file" name="fileName" > 
		<a href="ListServlet" class="layui-btn layui-btn-primary layui-btn-sm">下载页面</a>
		<br>
		</span>
		<br>
		<input type="button" value="继续添加" class="layui-btn layui-btn-primary layui-btn-sm" id="button" />
		<button type="submit" class="layui-btn layui-btn-primary layui-btn-sm">确认上传</button>
	</form><br>
	 
</body>
</html>

多文件上传selvelt类 UploadwithServlet.java

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		// 1.实列化一个SmartUpload对象
		SmartUpload su = new SmartUpload();
		// 2.初始化SmartUpload对象
		try {
			su.initialize(servletconfig, request, response);
		} catch (ServletException e1) {
			e1.printStackTrace();
		}
		// 3.设置文件上传的限制
		su.setAllowedFilesList("doc,docx,txt,pdf");
		// 设置单个文件的最大值
		su.setMaxFileSize(3 * 1024 * 1024);
		// 设置文件的总最大值
		su.setTotalMaxFileSize(12 * 1024 * 1024);
		// 4.使用upload上传
		try {
			su.upload();
		} catch (ServletException e2) {
			e2.printStackTrace();
		} catch (SmartUploadException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (IOException e2) {
			e2.printStackTrace();
		}
		// 5.保存文件
		Request reg = su.getRequest();
		// 获取上传的全部文件
		Files files = su.getFiles();
		// 获得文件的个数
		int fileCount = files.getCount();
		for (int i = 0; i < fileCount; i++) {
			File file = files.getFile(i);
			// 上传文件的时间
			Date curDate = new Date();
			long d = curDate.getTime();
			// 获取文件的后缀名
			String fileType = file.getFileExt();
			// 文件ID
			String fileId = String.valueOf(d);
			//文件名
			String fileName = file.getFileName();
			// 上传文件的客户端地址
			String uploadIp = request.getRemoteHost();
			// 保存的文件地址
			String fileUrl = "/upload/" + fileName ;
			// 获得上传时间
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
			String uploadDate = df.format(new Date());
			// 获取文件大小
			double fileSize = (double) file.getSize() / (1024 * 1024);						
			try {
				//保存文件
				file.saveAs(fileUrl);
			} catch (IOException e1) {
				e1.printStackTrace();
			} catch (SmartUploadException e1) {
				e1.printStackTrace();
			}
			/*
			 * 以上代码就能保存上传的文件到服务器了
			 * 下面的这段代码是把文件的信息保持到数据库
			 */
			upload f = new upload();
			f.setFileId(fileId);
			f.setFileName(fileName);
			f.setFileType(fileType);
			f.setFileSize(fileSize);
			f.setFileUrl(fileUrl);
			f.setUploadDate(uploadDate);
			f.setUploadIp(uploadIp);
			DaoFactory.getUploadDaoImpl().addUpload(f);
		}
		response.sendRedirect("ListServlet");
	}

分页列表前端代码

 

<div id = "btUpload">
<br>
	<a href="upload.jsp" class="layui-btn layui-btn-primary layui-btn-sm">上传文件</a>
	</div>
	<div id="table">
	<table class="layui-table" >
		<thead>
			<tr>
				<th>文件名称</th>
				<th>文件类型</th>
				<th>文件大小</th>
				<th>上传用户</th>
				<th>上传时间</th>
				<th>操作</th>
			</tr>
		</thead>
		<tbody>
			<%
				//List<upload> list = DaoFactory.getUploadDaoImpl().listUpload();
					List<upload> list = (List<upload>) request.getAttribute("list");
					for(upload f:list)
					{
			%>
			<tr>
				<td><%=f.getFileName()%></td>
				<td><%=f.getFileType()%></td>
				<td><%=f.getFileSize()%>M</td>				
				<td><%=f.getUploadIp()%></td>
				<td><%=f.getUploadDate()%></td>
				<td><a href="DownloadwithServlet?fileUrl=<%=f.getFileUrl()%>">下载</a></td>
			</tr>
			<%
				}
			%>
		</tbody>
	</table>
	</div>
	<center>
		<a href="ListServlet?action=first"
			class="layui-btn layui-btn-primary layui-btn-sm">首页</a>
		<a href="ListServlet?action=P"
			class="layui-btn layui-btn-primary layui-btn-sm"><i
			class="layui-icon"></i></a>    第
		<%=request.getAttribute("currentAge")%>
		页   共 <%=request.getAttribute("MaxPage")%> 页 
		<a href="ListServlet?action=L"
			class="layui-btn layui-btn-primary layui-btn-sm"><i
			class="layui-icon"></i></a>
		<a href="ListServlet?action=last"
			class="layui-btn layui-btn-primary layui-btn-sm">尾页</a>
	</center>