maven 引入

maven

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

测试类

package org.example;

import io.minio.MinioClient;
import io.minio.PutObjectArgs;

import java.io.FileInputStream;

public class Main {

    public static void main(String[] args) {

        final String fileP = "D:\\github\\minio-java-demo\\src\\main\\resources\\1.html";
        try (FileInputStream fileInputStream =  new FileInputStream(fileP)){
            //1.创建minio链接客户端
            MinioClient minioClient = MinioClient.builder().credentials("minioadmin", "minioadmin")
                    .endpoint("http://localhost:9000")
                    .build();

            //2.上传
            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                    .object("1.html")//文件名
                    .contentType("text/html")//文件类型
                    .bucket("test")//桶名词  与minio创建的名词一致
                    .stream(fileInputStream, fileInputStream.available(), -1) //文件流
                    .build();
            minioClient.putObject(putObjectArgs);

            System.out.println("http://localhost:9000/test/1.html");

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

访问

直接访问

我们直接访问上述地址:

报错如下:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
<Key>1.html</Key>
<BucketName>test</BucketName>
<Resource>/1.html</Resource>
<RequestId>181196CAD15274C8</RequestId>
<HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
</Error>

设置权限

需要设置 bucket 对应的访问权限

image

假如说你通过访问 localhost:9000/test/image/aaa.jpg, 报错,那么把image文件夹设置prefix,Access是设置只读,只写,和读写,一般设置只读

我这里因为是 http://localhost:9000/test/1.html,直接设置前缀为 /,对应的权限为读写。

然后就可以直接正常访问了。

参考资料

https://blog.csdn.net/qq_72114625/article/details/139333049