package com.sky.common.utils; import com.sky.common.properties.MinioProperties; import io.minio.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.io.InputStream; @Component @RequiredArgsConstructor @Slf4j public class MinioUtils { private final MinioClient minioClient; private final MinioProperties minioProperties; /** * 判断桶是否存在 * * @param bucketName String * @return found */ public boolean bucketExists(String bucketName) { boolean found = false; try { found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); } catch (Exception e) { e.printStackTrace(); } return found; } /** * 如果桶不存在就新建 * * @param bucketName String */ public void bucketCreate(String bucketName) { boolean exists = bucketExists(bucketName); if (!exists) { try { minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); } catch (Exception e) { e.printStackTrace(); } } } /** * 上传文件 * * @param fileName 文件名 * @param inputStream 输入流 * @param size 文件大小 */ public String uploadFile(String bucketName, String fileName, InputStream inputStream, Long size) { try { minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(fileName) .stream(inputStream, size, -1) .build()); return minioProperties.getEndpointUrl() + "/" + bucketName + "/" + fileName; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 上传文件 * * @param fileName 文件名 * @param inputStream 输入流 * @param size 文件大小 * @param contentType 文件类型 */ public String uploadFile(String bucketName, String fileName, InputStream inputStream, Long size, String contentType) { try { minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(fileName) .stream(inputStream, size, -1) .contentType(contentType) .build()); return minioProperties.getEndpointUrl() + "/" + bucketName + "/" + fileName; } catch (Exception e) { e.printStackTrace(); return null; } } /** * 获取文件 * * @param bucketName 桶名称 * @param fileName 对象名称 */ public InputStream getFile(String bucketName, String fileName) { try { return minioClient.getObject(GetObjectArgs.builder() .bucket(bucketName) .object(fileName) .build()); } catch (Exception e) { e.printStackTrace(); return null; } } }