springboot文件上传
配置application.properties文件
# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=3MB
一、单个文件上传
1.java代码
String format = new SimpleDateFormat("/yyyy-MM-dd/").format(new Date());
@RequestMapping("/upload")
public String getFile() {
return "upLoad";
}
@PostMapping("/upload")
@ResponseBody
public String upload(MultipartFile file, HttpServletRequest request) {
try {
return fileUpLoad(file, request);
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
private String fileUpLoad(MultipartFile file, HttpServletRequest request) throws IOException {
String path = request.getServletContext().getRealPath("/img") + format;
System.out.println("path = " + path);
File folder = new File(path);
if (!folder.exists()) {
folder.mkdirs();
}
String originalFilename = file.getOriginalFilename();
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf('.'));
file.transferTo(new File(folder, newFileName));
String fileServeInfo = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + request.getContextPath() +
"/img" + format + newFileName;
System.out.println("fileServeInfo = " + fileServeInfo);
return fileServeInfo;
}
2.html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
<form method="post" action="/manyupload" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
二、多个文件上传
1.java代码
public String getFile() {
return "upLoad";
}
@PostMapping("/manyupload")
@ResponseBody
public String manyUpload(HttpServletRequest request, @RequestParam("username") String username, @RequestParam(name = "file") MultipartFile... files) {
List<MultipartFile> multipartFiles = Arrays.asList(files);
ArrayList<MultipartFile> newMultiPartFiles = new ArrayList<>();
for (int i = 0; i < multipartFiles.size(); i++) {
if (!multipartFiles.get(i).getOriginalFilename().equals("")){
newMultiPartFiles.add(multipartFiles.get(i));
}
}
System.out.println(username);
String realpath = request.getServletContext().getRealPath("/" + username + "file") + format;
System.out.println("realpath = " + realpath);
File folder = new File(realpath);
if (!folder.exists()) {
folder.mkdirs();
}
if(newMultiPartFiles.size()>0){
int newMultiPartFilesSize = newMultiPartFiles.size();
for (int i = 0; i < newMultiPartFilesSize; i++) {
String originalFilename = newMultiPartFiles.get(i).getOriginalFilename();
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf('.'));
try {
multipartFiles.get(i).transferTo(new File(folder, newFileName));
String fileServeInfo = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + request.getContextPath() +
"/" + username + "file" + format + newFileName;
System.out.println(fileServeInfo);
} catch (IOException e) {
e.printStackTrace();
return "第" + (i + 1 )+ "份文件上传失败";
}
System.out.println((i + 1 )+ "份文件上传成功");
}
return "上传成功";
}else {
return "请选择上传的文件";
}
}
2.html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
<form method="post" action="/manyupload" enctype="multipart/form-data">
<input type="text" name="username"><br>
<input type="file" name="file"><br>
<input type="file" name="file"><br>
<input type="file" name="file"><br>
<input type="submit" value="提交">
</form>
</body>
</html>