| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package com.nb.oss.strategy;
- import com.nb.core.exception.CustomException;
- import io.minio.*;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.context.annotation.Bean;
- import org.springframework.http.MediaType;
- import org.springframework.stereotype.Component;
- import javax.annotation.Resource;
- import java.io.InputStream;
- /**
- * Minio工具类
- *
- * @author Kevin
- */
- @Component
- @Slf4j
- public class MinioUtil {
- @Resource
- MinioConfig minioConfig;
- @Resource
- MinioClient minioClient;
- private static final String BUCKET_PARAM="--bucketName--";
- private static final String PUBLIC_POLICY = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\",\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::"+BUCKET_PARAM+"\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListMultipartUploadParts\",\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\"],\"Resource\":[\"arn:aws:s3:::"+BUCKET_PARAM+"/*\"]}]}";
- @Bean
- private MinioClient minioClient() {
- MinioClient minioClient = MinioClient.builder()
- .endpoint(minioConfig.getUploadEndpoint(),minioConfig.getUploadPort(),minioConfig.isUploadSecure())
- .credentials(minioConfig.getAccessKey(), minioConfig.getSecretKey())
- .build();
- return minioClient;
- }
- public String uploadObject(InputStream stream, String filepath) {
- try {
- boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioConfig.getBucketName()).build());
- if (!exists) {
- minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioConfig.getBucketName()).build());
- minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(minioConfig.getBucketName())
- .config(PUBLIC_POLICY.replaceAll(BUCKET_PARAM,(minioConfig.getBucketName())))
- .build());
- }
- PutObjectArgs putObjectArgs = PutObjectArgs.builder()
- .bucket(minioConfig.getBucketName())
- .object(filepath.startsWith("/")?filepath.substring(1):filepath)
- .contentType(MediaType.APPLICATION_OCTET_STREAM_VALUE)
- .stream(stream, stream.available(), -1).build();
- minioClient.putObject(putObjectArgs);
- } catch (Exception e) {
- log.error("上传文件失败,{}", e.getMessage());
- throw new CustomException("上传文件失败," + e.getMessage());
- }
- return "/" + minioConfig.getBucketName() + filepath;
- }
- }
|