本项目部署的方式是单纯的jar形式。而且图片的上传和下载保存在本地。不想依托于七牛云等其他文件服务器。
所以图片上传保存的路径是项目的根目录。访问时通过映射到图片路径下。
/**
* 上传文件
*/
public static String uploadFile(MultipartFile file) throws IOException {
// 文件上传路径,相对路径
String filePath = System.getProperty("user.dir")+File.separator+"upload";
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 解决中文问题,liunx下中文路径,图片显示问题
fileName = UUID.randomUUID() + suffixName;
File fileDir = new File(filePath);
// 检测是否存在目录
if (!fileDir.exists()) {
fileDir.mkdirs();
}
// 构建真实的文件路径
File dest = new File(fileDir.getAbsolutePath() + File.separator + fileName);
try {
file.transferTo(dest);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
fileName = "/upload/" + fileName;
return fileName;
}
###图片路径映射
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// /upload/**为前端URL访问路径 后面为本地磁盘映射
// System.getProperty("user.dir")为当前项目所在路径
registry.addResourceHandler("/upload/**").addResourceLocations("file:" +System.getProperty("user.dir")+ File.separator+"upload"+File.separator);
}