springboot上传文件到minio中封装的工具类
minio配置
填写到yaml配置文件中,前缀为minio
```
@Data
@ConfigurationProperties(prefix = "minio") // 文件上传 配置前缀file.oss
public class MinIOConfigProperties implements Serializable {
private String accessKey;
private String secretKey;
private String bucket;
private String endpoint;
private String readPath;
}
```
文件上传代码
```
@Component
@Slf4j
public class FileOperations {
@Autowired
private MinioClient minioClient;
@Autowired
private MinIOConfigProperties minIOConfigProperties;
private final static String separator = "/";
/**
* 根据文件名生成文件路径
* @param postfix 文件后缀
* @param filename 文件名
* @return
*/
public String builderFilePath(String filename,String postfix) {
StringBuilder stringBuilder = new StringBuilder(50);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String todayStr = sdf.format(new Date());
stringBuilder.append(todayStr).append(separator);
stringBuilder.append(filename).append(postfix);
return stringBuilder.toString();
}
/**
* 上传文件
* @return 文件全路径
*/
public String uploadFile(MultipartFile file) {
//原始文件名 aaa.txt
String originalFilename = file.getOriginalFilename();
//后缀名
String postfix = originalFilename.substring(originalFilename.lastIndexOf("."));
//创建存储的文件名
String filename = System.currentTimeMillis()+ UUID.randomUUID().toString().replace("-","");
String filePath = builderFilePath(filename,postfix);
try {
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object(filePath) //文件存储路径
.contentType(file.getContentType()) //文件类型
.bucket(minIOConfigProperties.getBucket()) //存储桶名
.stream(file.getInputStream(),file.getSize(),-1)
.build();
minioClient.putObject(putObjectArgs);
//拼装访问路劲
StringBuilder urlPath = new StringBuilder(minIOConfigProperties.getReadPath());
urlPath.append(separator+minIOConfigProperties.getBucket());
urlPath.append(separator);
urlPath.append(filePath);
return urlPath.toString();
}catch (Exception ex){
log.error("minio put file error.",ex);
throw new RuntimeException("上传文件失败");
}
}
}
```