在项目代码实现中,会遇到需要上传文件的情况,并且总体上传数量不多,比如只面向部分用户的应用,有上传头像的需要,对服务器要求不高压力不大,可以使用本地上传的方式去进行实现。
java
@RestController
@Slf4j
public class UploadController {
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
log.info("上传的文件:{}",image);
//获取源文件名
String originalFilename = image.getOriginalFilename();
//构建新文件名,uuid+取后缀(为避免存入文件名重复覆盖,使用uuid生成文件名)
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
String newFileName = UUID.randomUUID() + suffix;
//获取文件的上传路径:拿到类加载器(管理class文件),通过相对路径resourses文件夹下的static文件夹,获取到项目所在的决定路径
String path = this.getClass().getClassLoader().getResource("static/").getPath();
//新建文件按现在项目的绝对路径+文件名
File file = new File(path+newFileName);
//将文件放进去
image.transferTo(file);
//返回文件的访问地址,该地址可以直接访问到上传的图片
return Result.success("http://localhost:8080/"+newFileName);
}
}
注:这里的Result类,是自己创建的返回类,可以按照项目需求进行变更