一、写在前面
这篇文章主要是分享使用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>