177 字
1 分钟
苍穹外卖文件上传到本地
一、存储常量
创建常量类存储文件上传相关的常量
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+文件后缀生成不会重复的文件名后上传文件。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
