spring boot - minio 入门

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值