首先如上图我们先在yml配置文件配置一下path变量路径
然后Controller中运用Value注解下path路径值
即basePath=D:\wrk\img\
@Value("${reggie.path}")
private String basePath;
以下解说务必要根据代码同步解读!!!
upload()方法中用MultipartFile 类接收前端请求过来的file文件
注:file是临时文件,upload方法一旦运行到末尾结束时,file文件将会消失,所以我们要将file文件转存到一个目录下
1.首先我们先用getOriginalFilename方法获取file文件的原始路径
2.然后再获取文件的后缀,我们用lastIndexof定位要分隔字符('.')所在位置,比如是5,利用substring截取5后面的字符串,并赋值给suffix
3.后缀我们解决了之后,在解决文件名的问题,为防止文件名重复,我们利用UUID.randomUUID生成新的文件名,再加上suffix后缀变量,即文件名+后缀组成一个新的文件名
4.我们创建一个基于basePath(D:\wrk\img\)的File文件对象 dir
5.根据dir.exists是否为null,判断路径是否存在,值为null说明不存在,就利用dir.mkdirs创建一个D:\wrk\img\路径
6.最后我们使用transferTo方法重新转存到我们的路径D:\wrk\img\路径上,我们可以看到前端所传文件已经被我们转存到D:\wrk\img\目录上了
欢迎大家评论区讨论
@RequestMapping("/upload")
public R<String> upload(MultipartFile file){
//file是这次请求的临时文件,需要转存到一个指定的地方,否则在本次请求过后file将消失
//获取原始文件名
String originalFilename=file.getOriginalFilename();
String suffix=originalFilename.substring(originalFilename.lastIndexOf('.'));
//使用UUID重新生成文件名,避免文件名重复
String fileName= UUID.randomUUID().toString()+suffix; //提取的文件名加后缀名
//创建一个目录对象
File dir=new File(basePath);
//判断目录是否存在
if(!dir.exists()){
//目录一旦不存在,即创建
dir.mkdirs();
}
//将临时文件转存到指定位置
try {
file.transferTo(new File(basePath+fileName));
} catch (IOException e) {
e.printStackTrace();
}
return R.success(fileName);
}