1、index.jsp文件代码【前端上传页面】:
<%--
Created by IntelliJ IDEA.
User: GaoPing
Date: 2020/6/30
Time: 23:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SpringMVC的入门程序</title>
</head>
<body>
<h3>SpringMVC的入门程序</h3>
<div>
<form action="/fileUpload" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>文件描述:</td>
<td><input type="text" name="description" id="description"></td>
</tr>
<tr>
<td>请选择文件:</td>
<td><input type="file" name="files" id="files" multiple="multiple" ></td>
</tr>
<tr>
<td><input type="submit" value="提交" id="上传"></td>
</tr>
</table>
</form>
</div>
<script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
<script>
</script>
</body>
</html>
2、success.jsp代码【后台返回页面】:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body>
<h3>SpringMVC的入门程序</h3>
<div>
<table>
<tr>
<td>上传文件路径:</td>
<td>${requestScope.fileUrl}</td>
</tr>
</table>
</div>
<script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
<script></script>
</body>
</html>
3、error.jsp代码【后台返回页面】:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error</title>
</head>
<body>
<h3>SpringMVC的入门程序</h3>
<div>
<h3>文件上传失败</h3>
</div>
<script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
<script></script>
</body>
</html>
4、FileUploadController类代码:
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.List;
import java.util.UUID;
/**
* @author YuusukeUchiha
* @date 2020/7/11 23:28
* @ide IntelliJ IDEA
*/
@Controller
public class FileUploadController {
@RequestMapping(value = "/fileUpload")
public String fileUpload(
@RequestParam("description") String description,
@RequestParam(value = "files", required = false) List<MultipartFile> multipartFileList,
HttpServletRequest httpServletRequest
) {
// 判断上传文件是否存在
if (!multipartFileList.isEmpty() && multipartFileList.size() > 0) {
// 循环输出上传的文件
for (MultipartFile multipartFile : multipartFileList) {
// 获取上传文件的原始名称
String originalFileName = multipartFile.getOriginalFilename();
// 设置上传文件的保存地址目录
String dirPath = httpServletRequest.getServletContext().getRealPath("/upload/");
File filePath = new File(dirPath);
// 如果保存文件的地址不存在,就先创建目录
if (!filePath.exists()) {
filePath.mkdirs();
}
// 使用UUID重新命名上传的文件名称(文件描述_uuid_原始文件名称)
String newFileName = description + "_" + UUID.randomUUID() + "_" + originalFileName;
try {
// 使用MultipartFile接口的方法将文件上传到指定位置
multipartFile.transferTo(new File(dirPath + newFileName));
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
// 跳转成功页面
return "success";
} else {
return "error";
}
}
}