html代码
在form表单中,type类型写file就可以实现上传文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="multipart/form-data; charset=utf-8" />
<title>上传加分项</title>
</head>
<body>
<form action="/subMaterials" method="post" enctype="multipart/form-data">
<input type="text" name="type" placeholder="奖项类型"><br> <!-- 下拉框,三选一 -->
<input type="text" name="awardName" placeholder="奖项名称"><br>
<input type="text" name="score" placeholder="加分数"><br>
<input type="file" name="materials"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
Controller层
需要一个MultipartFile类来接收value="materials"的file文件。
这里要注意的是如果使用这种方法上传文件,只能使用POST方法
@PostMapping("/subMaterials")
public String subMaterials(@RequestParam(value = "materials") MultipartFile file, HttpServletRequest request) {
String info = examineService.insertAwardTemp(file);
return "index";
}
Service层
使用file.transferTo(Paths.get(filePath))方法实现文件的转存路径。
public String insertAwardTemp(AwardTemp awardTemp, MultipartFile file) {
String filePath = "support/" + awardTemp.getClassMajor() + "/" + awardTemp.getAwardName() + "-" + awardTemp.getName() + ".jpg";
try {
file.transferTo(Paths.get(filePath));
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败"; // 上传失败后所有提交的数据清除,不进入数据库!
}
}
删除指定路径下的文件
file.delete()方法。
String filePath = "support/" + awardTemp.getClassMajor() + "/" + awardTemp.getAwardName() + "-" + awardTemp.getName() + ".jpg";
File file = new File(filePath);
try {
boolean flag = file.delete(); // 删除照片
if (flag) {
return "删除成功";
} else {
return "删除失败!";
}
} catch (Exception e) {
e.printStackTrace();
return "图片不存在或其他异常!";
}