前言:此文章献给项目需要打包jar包上传到服务器同学们
解决的问题?:我们一般的项目的文件下载只能在本地正常运行下载,但是打包成jar包后便无法进行下载,问题是找不到路径
话不多说上解决步骤:
第一步:
拦截器代码书写静态资源拦截处理
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/","file:static/");
}
第二步骤
@RequestMapping("/upload")
public void upload(MultipartFile photo) throws IOException {
//判断用户是否上传了文件
if (!photo.isEmpty()) {
String fileName = photo.getOriginalFilename();
//获取项目路径
String path = System.getProperty("user.dir")+"/static/upload/";
File directory = new File(path);
if(!directory.exists()){
directory.mkdirs();
}
String realPath = directory.getCanonicalPath();
//限制文件上传的类型
String contentType = photo.getContentType();
if ("image/jpeg".equals(contentType) || "image/png".equals(contentType)) {
File file = new File(realPath, fileName);
//完成文件的上传
photo.transferTo(file);
System.out.println("图片上传成功!");
} else {
System.out.println("上传失败!");
}
} else {
System.out.println("上传失败!");
}
}
此外还有一些默认的配置在application.properties(可以不写)
#是否开启文件上传支持,默认为true。
spring.servlet.multipart.enabled=true
#文件写入磁盘的阈值,默认为0。
spring.servlet.multipart.file-size-threshold=10
#上传文件的临时保存位置。
spring.servlet.multipart.location=C:\\Users\\Lenovo
#上传的单个文件的最大大小,默认为1MB。
spring.servlet.multipart.max-file-size=20MB
#多文件上传时文件的总大小,默认为10MB。
spring.servlet.multipart.max-request-size=10MB
#文件是否延迟解析,默认为false。
spring.servlet.multipart.resolve-lazily=false