MultipartFile重命名文件
导引:
在实现Minio文件上传时,当文件名出现特殊标点符号时,无法上传文件。查阅资料发现,minio不支持特殊文件名的文件。
这时可以通过修改 文件名实现上传操纵
1、添加依赖
<!--文件上传重命名依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-mock</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.3.1</version>
</dependency>
2、文件重命名方法
private MultipartFile renameFile(MultipartFile multipartFile) throws Exception {
InputStream inputStream = null;
try {
String originalFilename = multipartFile.getOriginalFilename();
if (StringUtil.isEmpty(originalFilename)) {
throw new BizException(CosmosResultCodeEnum.BIZ_FAIL);
}
String prefix = originalFilename.substring(0, originalFilename.lastIndexOf("."));
prefix = prefix.length() < 3 ? prefix + "_file" : prefix;
String suffix = getSuffix(multipartFile);
// 临时文件
File file = File.createTempFile(prefix, "." + suffix);
multipartFile.transferTo(file);
String fileName = prefix + "_" + UUIDUtil.getTimeStamp() + "." + suffix;
// 重命名
file = FileUtil.rename(file, fileName, true, true);
inputStream = new FileInputStream(file);
// File转换成MultipartFile
multipartFile = new MockMultipartFile(fileName, fileName,
ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
if (!file.delete()) {
throw new BizException(CosmosResultCodeEnum.BIZ_FAIL);
}
return multipartFile;
} catch (Exception e) {
throw new BizException(CosmosResultCodeEnum.BIZ_FAIL);
} finally {
if (inputStream != null) {
inputStream.close();
}
}
}
转自
https://cloud.tencent.com/developer/article/2020531