1.加jar包(mysl版本不同连接的Jar包就不一样)

2.文件上传html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>管理员文件上传</h2>
<form method="post" action="fileUploads" enctype="multipart/form-data">
<p>文件名:<input type="file" name="file1"></p>
<p>文件名:<input type="file" name="file2"></p>
<p>文件名:<input type="file" name="file3"></p>
<p>文件名:<input type="submit" value="提交"></p>
</form>
</body>
</html>
3 ssm.ml 文件配置(aplication.xmx自行配置)
<!--文件上传的配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置文件的大小(1048576=1M)-->
<property name="maxUploadSize" value="4194304"/>
<!--缓存区大小-->
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
4.各个层的代码

5.文件上传Controer(代码)
@RequestMapping("fileUploads")
public String upload(HttpServletRequest request) throws IOException {
// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
// 检查form中是否有 enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest 中所有的文件名
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 一次遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next().toString());
if (file != null && file.getOriginalFilename() != "") {
//文件格式的判断 文件名的处理省略
String fileName = file.getOriginalFilename();
/*UUID命名文件避免文件命名重复*/
String uuid = UUID.randomUUID().toString();
String path = request.getSession().getServletContext()
.getRealPath("/userFile/") + uuid + "_" + fileName;
//需在web下创建一个userFile文件夹(该文件夹下必须有一个子文件)
file.transferTo(new File(path));
// 上传到数据库
filesService.addFile(uuid + "_" + fileName);
}
}
}
return "index";
}
6.上传文件(javaWeb第二四六章)

7.文件下载(Controller代码)
7.1html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
$.getJSON("filesList", function (data) {
console.log(data);
loadData(data);
});
});
function loadData(data) {
$("#t tr:gt(0)").remove();
for (var i = 0; i < data.length; i++) {
var str = "<tr><td>";
str += "<input type='checkbox' class='choose' value='" + data[i].fileId + "'/></td><td>";
str += data[i].fileId + "</td><td>";
str += data[i].fileName.substr(data[i].fileName).slice(37) + "</td><td>";
str += "<a href='fileDowns?filename=" + data[i].fileName + "'>下载</a></td></tr>";
$("#t").append(str);
}
}
</script>
<body>
<a href="fileDowns?filename=5a54247f-2127-4f4f-b3bf-d2025077c7fc_c3p0.zip">文件下载</a>
<div>
<h3 style="color: red">文件下载</h3>
<button><a href="index.html">首页</a></button>
<table id="t" border="1" cellpadding="3" cellspacing="3">
<tr>
<th><input type="checkbox" onclick="" id="all"></th>
<th>序號</th>
<th>文件名</th>
<th>操作</th>
</tr>
</table>
</div>
</body>
</html>
7.2前端输出文件名(根据数据库的文件名下载)
@RequestMapping(value = "filesList")
@ResponseBody
public String getFilesList() {
System.out.println("进入filesList_>");
//调用底层方法取数据获取文件名
List<Files> list = filesService.getFiles();
String string = JSON.toJSONString(list);
System.out.println(string);
return string;
}
7.3文件下载
@RequestMapping(value = "fileDowns")
public void download(HttpServletRequest request, HttpServletResponse response, String filename) throws IOException {
//checkPay.apk为需要下载的文件
//String filename = "checkPay.apk"; //我这里使用的是一个固定的文件,方法可以不用写filename参数
//获取文件的绝对路径名称,apk为根目录下的一个文件夹,这个只能获取根目录文件夹的绝对路径
String path = request.getSession().getServletContext().getRealPath("userFile") + "\\" + filename;
System.out.println(path);
//得到要下载的文件
File file = new File(path);
if (!file.exists()) {
response.setContentType("text/html; charset=UTF-8");//注意text/html,和application/html
response.getWriter().print("<html><body><script type='text/javascript'>alert('您要下载的资源已被删除!');</script></body></html>");
response.getWriter().close();
System.out.println("您要下载的资源已被删除!!");
return;
}
//转码,免得文件名中文乱码
filename = URLEncoder.encode(filename, "UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + filename.substring(37));
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
// 读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(path);
// 创建输出流
OutputStream out = response.getOutputStream();
// 创建缓冲区
byte buffer[] = new byte[1024]; // 缓冲区的大小设置是个迷 我也没搞明白
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
//关闭文件输入流
in.close();
// 关闭输出流
out.close();
}
7.5文件下载(javaWeb第六章)

版权声明:本文为m0_45256755原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。