因为采用前后端分离思想写的项目,并没有为Springboot 设置 static template,但最近使用 wangEditor 编辑器要使用图片上传下载功能,这里单独设置文件夹用来保存照片文件,并设置SpringBoot 指向该静态文件
一、配置 yml 指向文件要保存路径
因为开发环境主要是 windows application-dev.yml 配置主要如下 配置完即可实现 图片查看功能 照片保存在特定文件 只需要 ip:端口/img/文件名
# 自定义文件路径变量
file:
path: F:/file/
imgPath: F:/file/img/
spring:
resources:
# 设置springboot静态文件路径
static-locations: file:${file.path}
如果要对上传文件和下载文件进行大小限制,yml 加入以下
spring:
servlet:
multipart:
enabled: true
# 最大上传文件大小
max-file-size: 20MB
# 最大下载文件大小
max-request-size: 20MB
二、 实现图片上传功能
前端示例代码 :
<html>
<body>
<form action="http://localhost/uploadImg" enctype="multipart/form-data" method="POST">
<input type="file" name="file"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
controller 代码
@RestController
public class ResourceController {
@Value("${file.imgPath}")
private String imgPath;
@PostMapping("/uploadImg")
public String uploadImg(@RequestParam("file") MultipartFile img) throws IOException {
String fileName = img.getOriginalFilename();
System.out.println(fileName);
String stffixName = fileName.substring(fileName.lastIndexOf("."));
UUID uuid = UUID.randomUUID();
String finalName = uuid + stffixName;
while( new File(finalName).exists()){
uuid = UUID.randomUUID();
finalName = uuid + stffixName;
}
String finalPath = imgPath + File.separator + finalName;
try{
img.transferTo(new File(finalPath));
}catch (Exception e){
return "fail"
}
return "success";
}
}
|