SpringBooot项目中使用minio

管理控制台  

创建一个桶  

设置添加名称  

设置访问权限  

 

 

导入依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.1.0</version>
</dependency>

配置文件

minio:
  accessKey: minio  //用户名
  secretKey: minio123    //密码
  bucket: xc    //桶名
  endpoint: http://192.168.136.150:9000    //访问地址
  domain: http://192.168.136.150:9000    //请求地址

配置对象

​​​​​​​

@ConfigurationProperties(prefix = "minio")  // 文件上传 配置前缀file.oss
@Configuration
@Data
public class MinioProperties implements Serializable {
    private String accessKey; //用户名
    private String secretKey; //密码
    private String bucket;  //桶名
    private String endpoint;  //minio访问地址
    private String domain; //请求地址
}

初始化MinioClient

@Configuration
public class MinioConfig {

    @Autowired
    private MinioProperties prop;

    @Bean
    public MinioClient buildMinioClient(){
        return MinioClient
                .builder()
                .credentials(prop.getAccessKey(),prop.getSecretKey()) //用户名密码
                .endpoint(prop.getEndpoint())  //minio访问地址
                .build();
    }
}

集成测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class MinioTest {

    @Autowired
    private MinioClient minioClient;

    @Autowired
    private MinioProperties properties;

    @Test
    public void testUpload() throws Exception {
        //1、指定文件
        FileInputStream inputStream = new FileInputStream("D:\\2.jpg");
        String filename = "2.jpg";
        //2、指定文件上传的位置和文件名称   /images/2022/07/17/uuid +filename
        String filepath = "/images/"+new SimpleDateFormat("yyyy/MM/dd/")
                .format(new Date()) +
                UUID.randomUUID().toString()+filename;
        //3、构造PutObjectArgs参数,并发送请求
        PutObjectArgs objectArgs = PutObjectArgs.builder()
              .contentType("image/jpg") //文件类型
              .stream(inputStream, inputStream.available(), -1) //文件流
              .bucket(properties.getBucket()) //存储空间
              .object(filepath) //文件
              .build();
        minioClient.putObject(objectArgs);
        //4、拼接访问地址
        String urlPath = properties.getDomain() +"/" + properties.getBucket() + filepath;
        System.out.println(urlPath);
    }
}

项目当中

    public ResponseResult upload(MultipartFile uploadFile) throws Exception {
        //1.获取数据流
        InputStream inputStream = uploadFile.getInputStream();
        //2.配置上传的请求地址
        String filePath = "/images/" + new SimpleDateFormat("yyyy/MM/dd/")
                .format(new Date()) + UUID.randomUUID().toString() + uploadFile.getOriginalFilename();
        //3、文件上传
        //3.1 文件上传对象
        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                .bucket(properties.getBucket())
                .object(filePath)
                .stream(inputStream, inputStream.available(), -1)
                .contentType("image/jpg")
                .build();
        //3.2 文件上传
        client.putObject(putObjectArgs);
        //4、获取请求地址  (访问域名 + bucket + filePath)
        String url =  properties.getDomain() + "/" + properties.getBucket() + "/" + filePath;
        return ResponseResult.okResult(url);
    }

 具体配置参见官网:

        https://docs.min.io/docs/java-client-quickstart-guide.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值