177 字
1 分钟
苍穹外卖文件上传到本地
2026-04-26

一、存储常量#

创建常量类存储文件上传相关的常量

public class FileUploadConstant {
//文件上传路径
public static String FILE_UPLOAD_PATH = "C:/Users/images/";
//文件访问路径
public static String FILE_VIVSI_PATH = "http://localhost:8080/image/";
}

二、设置静态资源映射#

苍穹外卖中的已经有了继承WebMvcConfigurationSupport的配置类,因此只需要在addResourceHandlers方法中加上下面的代码,就可以

//静态资源映射
registry.addResourceHandler("/image/**")//虚拟地址
.addResourceLocations("file:C:/Users/images/");//本地存储地址

文件存储到本地#

@PostMapping("/upload")
@ApiOperation("文件上传")
public Result<String> upload(MultipartFile file) {
try {
//原始文件名
String originalFileName = file.getOriginalFilename();
//截取原始文件名后缀
String extension = originalFileName.substring(originalFileName.lastIndexOf("."));
//构造新文件名
String newFileName = UUID.randomUUID().toString() + extension;
//生成文件路径
String filePath = FileUploadConstant.FILE_UPLOAD_PATH + newFileName;
//保存文件到文件路径
file.transferTo(new File(filePath));
//返回文件访问路径
return Result.success(FileUploadConstant.FILE_VIVSI_PATH + newFileName);
} catch (IOException e) {
log.error("文件上传失败:{ }", e);
}
//返回文件上传失败
return Result.success(MessageConstant.UPLOAD_FAILED);
}

总结#

使用常量类存储路径降低耦合度。

使用originalFilename.lastIndexOf(”.”)找到最后一个点的位置后,使用originalFilename.substring(index)从点的位置开始截取字符串到末尾,截取文件的后缀。

文件名重复可能会覆盖掉之前的文件,使用UUID+文件后缀生成不会重复的文件名后上传文件。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

苍穹外卖文件上传到本地
https://blabka.me/posts/苍穹外卖-文件上传到本地/
作者
Blabka
发布于
2026-04-26
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录