第十七节:学习Hutool上传文件(自学Spring boot 3.x的第四天)
这节记录下如何使用Hutool库上传本地的文件到服务器端(因为是练习,所以是本地端)。
第一步:引入Hutool库最新版本,通过maven方式。(最新版本需去maven仓库查询)
第二步:编写一个postmapping方式的upload方法
@RestController
public class UploadController {
@Value("${upload.path}")
private String uploadPath;
@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
//获取文件名称
String fileName = file.getOriginalFilename();
//获取文件的后缀
String suffix = FileUtil.getSuffix(fileName);
//对文件名做重命名操作
//年/月/日/当前时间/时间戳-uuid.jpg
//文件子路径
String url = ObjectUtil.generateFileByTime()+ObjectUtil.generateFileBySecond()+"-"+ObjectUtil.generateUUID()+ StrUtil.DOT+suffix;
//文件真实路径
String filePath = uploadPath+url;
InputStream inputStream = file.getInputStream();
FileUtil.writeFromStream(inputStream,filePath);
return Result.success(url);
}
}
编写一个ObjectUtil的工具栏。
public class ObjectUtil {
/**
* 对年月日进行格式化
* @return
*/
public static String generateFileByTime(){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(new Date()).replaceAll("-","/")+"/";
}
/**
* 对时分秒进行格式化
* @return
*/
public static String generateFileBySecond(){
DateFormat dateFormat = new SimpleDateFormat("HH-mm-ss");
return dateFormat.format(new Date()).replaceAll("-","");
}
/**
* 生成UUID并格式化
* @return
*/
public static String generateUUID(){
return UUID.randomUUID().toString().replaceAll("-","");
}
}
第三步:测试
第四步:开放该目录供外界访问
这里涉及到上节提到的自定义资源。在配置类中加上该文件的访问前缀和资源位置。