1. Introduce dependencies
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version> </dependency>
File configuration under the config package
@Data @Builder @NoArgsConstructor @AllArgsConstructor @Component("minIoProperties") @ConfigurationProperties (prefix = "minio") public class MinIoProperties {<!-- --> private String uri; private String endpoint; private String accessKey; private String secretKey; }
yml file configuration
Tools utils
@Slf4j @Component("minIoUtils") @Configuration @EnableConfigurationProperties({<!-- -->MinIoProperties. class}) public class MinIoUtils {<!-- --> @Resource(name = "minIoProperties") private MinIoProperties minIo; public MinIoUtils(@Qualifier("minIoProperties") MinIoProperties minIo) {<!-- --> this.minIo = minIo; } private MinioClient minioClient; /** * Initialize minio configuration */ @PostConstruct public void init() {<!-- --> try {<!-- --> minioClient = new MinioClient.Builder().endpoint(minIo.getEndpoint()) .credentials(minIo.getAccessKey(), minIo.getSecretKey()) .build(); } catch (Exception e) {<!-- --> log.error("File server - connection failed" + e); throw new AppException(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "File Server - Connection failed"); } } /** * Determine whether the bucket exists * * @param bucketName: bucket name * @return */ public boolean bucketExists(String bucketName) {<!-- --> try {<!-- --> return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); } catch (Exception e) {<!-- --> log.error("File Server - Failed to check whether the folder exists, bucketName={}, exception={}", bucketName, e); throw new AppException(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "File Server - Failed to check whether the folder exists"); } } /** * Create buckets * * @param bucketName: bucket name */ public void makeBucket(String bucketName) {<!-- --> try {<!-- --> boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); ; if (!isExist) {<!-- --> minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); } } catch (Exception e) {<!-- --> log.error("File server - failed to create folder, bucketName={}, exception={}", bucketName, e); throw new AppException(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "File server - failed to create folder"); } } /** * bucket police * * @param bucketName: bucket name */ public void bucketPolice(String bucketName) {<!-- --> try {<!-- --> boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); if (!isExist) {<!-- --> throw new AppException(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "File server - folder does not exist"); } StringBuilder builder = new StringBuilder(); builder.append("{\\ "); builder.append(" "Statement": [\\ "); // builder. append(" {\\ "); // builder.append(" "Action": [\\ "); // builder.append(" "s3:GetBucketLocation",\\ "); // builder. append(" "s3:ListBucket"\\ "); // builder.append(" ],\\ "); // builder. append(" "Effect": "Allow",\\ "); // builder. append(" "Principal": "*",\\ "); // builder.append(" "Resource": "arn:aws:s3:::my-bucketname"\\ "); // builder.append(" },\\ "); builder.append(" {\\ "); builder.append(" "Action": "s3:GetObject",\\ "); builder.append(" "Effect": "Allow",\\ "); builder.append(" "Principal": "*",\\ "); builder.append(" "Resource": "arn:aws:s3:::" + bucketName + "/*"\\ "); builder.append(" }\\ "); builder.append(" ],\\ "); builder.append(" "Version": "2012-10-17"\\ "); builder.append("}\\ "); minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(builder.toString()).build()); } catch (Exception e) {<!-- --> log.error("File Server - Failed to create folder access policy, bucketName={}, exception={}", bucketName, e); throw new AppException(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "File server - failed to create folder access policy"); } } /** * File Upload * * @param inputStream * @param bucketName * @param contentType * @param objectName * @return */ public Boolean putObject(InputStream inputStream, String bucketName, String contentType, String objectName) {<!-- --> try {<!-- --> if (!bucketExists(bucketName)) {<!-- --> makeBucket(bucketName); } // Upload a file to the bucket using putObject // minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).contentType(contentType). // stream(inputStream, -1, 1024 * 1024 * 10).build()); minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).contentType(contentType). stream(inputStream, -1,1024 * 1024 * 10).build()); return true; } catch (Exception e) {<!-- --> log.error("File server - failed to upload file, bucketName={}, contentType={}, objectName={}, exception={}", bucketName, contentType, objectName, e); throw new AppException(String.valueOf(500), "File server - failed to upload file"); } } /** * Delete Files * * @param bucketName * @param objectName */ public void removeObject(String bucketName, String objectName) {<!-- --> try {<!-- --> minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build()); } catch (Exception e) {<!-- --> log.error("File server - failed to delete file, bucketName={}, objectName={}, exception={}", bucketName, objectName, e); throw new AppException(String.valueOf(500), "File server - failed to delete file"); } } /** * get file * * @param bucketName * @param objectName */ public GetObjectResponse getObject(String bucketName, String objectName) {<!-- --> try {<!-- --> return minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build()); } catch (Exception e) {<!-- --> log.error("File server - Failed to get the file, bucketName={}, objectName={}, exception={}", bucketName, objectName, e); throw new AppException(String.valueOf(500), "File server - failed to get the file"); } } /** * Get the 7-day validity period url of the file * * @param bucketName * @param objectName * @return */ public String getFileUrl(String bucketName, String objectName) {<!-- --> try {<!-- --> String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(objectName). method(Method.GET).expiry(60 * 60 * 24 * 7).build()); return url; } catch (Exception e) {<!-- --> log.error("File server - Failed to get file url, bucketName={}, objectName={}, exception={}", bucketName, objectName, e); throw new AppException(String.valueOf(500), "File server - failed to get file url"); } } }
So far, the upload and download of files in the project can be realized by introducing the method in the tool class
refer to:
https://lizhou.blog.csdn.net/article/details/106039407