spring boot - minio 入门
基于 minio-8.5.2
导入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.2</version>
</dependency>
application.properties
minio.endpoint=http://192.xx.x.10:9000
minio.bucketName=dev
minio.accessKey=dev
minio.secretKey=dev@123456
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=1GB
spring.servlet.multipart.max-request-size=1GB
spring.servlet.multipart.location=E:/data
配置 minio config
@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
private String endpoint;
private String accessKey;
private String secretKey;
private String bucketName;
private String region = "china";
@Bean
public MinioClient minioClient() {
return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
}
@Bean
public MinioAsyncClient minioAsyncClient() {
return MinioAsyncClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
}
}
UploadController
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, @RequestParam(value = "rename", required = false) Boolean rename) {
if (rename == null) {
rename = true;
}
String upload = uploadService.upload(file, rename);
return upload;
}
@Service
public class UploadServiceImpl implements UploadService {
@Autowired
private MinIoAuthClient minIoAuthClient;
public String upload(MultipartFile file, Boolean rename) {
return minIoAuthClient.upload(file,null, rename);
}
}
MinIoAuthClient
@Slf4j
@Component
public class MinIoAuthClient {
@Autowired
private MinioConfig config;
@Autowired
private MinioClient minioClient;
/**
* 单个文件上传
* @param file
* @param rename
* @return
*/
public String upload(MultipartFile file,String inputFileName, Boolean rename) {
String objectName = null;
InputStream inputStream = null;
try {
String originalFilename = inputFileName!=null? inputFileName: file.getOriginalFilename();
if (!rename) {
String fileName = UUID.randomUUID().toString().replace("-", "")
+ originalFilename.substring(originalFilename.lastIndexOf("."));
objectName = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM/dd")).concat("/").concat(fileName);
} else {
objectName = originalFilename;
}
inputStream = file.getInputStream();
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(config.getBucketName()).object(objectName).stream(inputStream, file.getSize(), -1).contentType(file.getContentType()).build();
minioClient.putObject(objectArgs);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (inputStream != null) {
try {
//关闭流,不然会报错
inputStream.close();
} catch (IOException e) {
log.error("delete file error", e);
}
}
}
return objectName;
}
}