linux 搭建自己的 OSS 服务器 minio 搭建OSS服务器 springboot整合minio 文件服务器 设置minio bucket的策略 policy

目录

1. minio 官网地址

2.需要环境 一台可以上网的 Linux 服务器

3. 在minion官网 找到 如图

4.访问 地址:http://ip:9000/

5.设置minio

后台启动

添加访问连接

minio获取的连接默认7天

minio设置永久连接 访问地址是:http://**:9000/文件路径

6. spring boot使用Minio

6.1添加jar

6.2创建连接  (admin123 后的false 是使用http请求)

6.3 创建bucket桶

6.4上传文件



1. minio 官网地址

   https://docs.min.io/

中文文档:http://docs.minio.org.cn/docs/

2.需要环境 一台可以上网的 Linux 服务器

Windows 上安装VMware 安装 Linux(centOS7)

3. 在minion官网 找到 如图

wget https://dl.min.io/server/minio/release/linux-amd64/minio

这个时间比较久

等待下载完成

添加可执行权限  chmod +x minio

启动指定一个data目录  ./minio server /data  没有data创建目录 mkdir data

4.访问 地址:http://ip:9000/

登录用户名:RootUser :minioadmin   RootPass: minioadmin

设置服务器的9000的远程端口 或关闭防火墙

    systemctl stop firewalld.service

就可以到登录界面了。

5.设置minio

后台启动

nohup ./minio server /data >./minio.log 2>&1 &

添加访问连接

./mc config host add miniodev http://**:9000 admin admin123

minio获取的连接默认7天

minioClient.presignedGetObject("桶名称", "文件名称(包括子文件夹)", "int类型默认是秒")

minio设置永久连接 访问地址是:http://**:9000/文件路径

这里的miniodev是上面添加连接 add 后的名称。

管理匿名访问存储桶和其内部内容的策略policy 有【none,download,upload.public】四个选项

#设置桶的访问策略
./mc policy set public miniodev/img

#设置桶的访问策略
./mc policy set public miniodev/img/hh

#清空桶的policy

./mc policy set none miniodev/img

6. spring boot使用Minio

6.1添加jar

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

6.2创建连接  (admin123 后的false 是使用http请求)

 MinioClient minioClient = new MinioClient("http://**",9000,
                "admin", "admin123",false);

6.3 创建bucket桶

try {
            // 如存储桶不存在,创建之。
            boolean found = minioClient.bucketExists("mybucket");
            if (found) {
                System.out.println("mybucket already exists");
            } else {
                // 创建名为'my-bucketname'的存储桶。
                minioClient.makeBucket("mybucket");
                System.out.println("mybucket is created successfully");
            }
        } catch (MinioException e) {
            System.out.println("Error occurred: " + e);
        }

6.4上传文件

        方式一:file方式

//
minioClient.putObject("桶名称","文件名称", "C:\\home\\icon\\1.jpg",null(这个使用默认的contentType));

方式二:流方式

/**
     * 通过InputStream 上传文件对象
     * @param minioClient 连接
     * @param bucketName 桶名称
     * @param objName 文件名称
     * @param stream 流文件
     * @param contentType  文件类型
     * @throws Exception
     */
    public static void putObject(MinioClient minioClient, String bucketName, String objName, InputStream stream, String contentType) throws Exception{
        //定义上传文件可选项
        PutObjectOptions options = new  PutObjectOptions(stream.available(),-1L);
                options.setContentType(contentType);
        minioClient.putObject(bucketName,objName,stream,options);

    }

6.5 获取文件url  这里是获取7天内的文件连接,超过7天无法获取,并报异常

方式一:

/**
     * 获取下载URL地址
     * @param minioClient 
     * @param bucketName
     * @param objName
     * @param expires 小于等于7
     * @throws Exception
     */
    public static void presignedPutObject(MinioClient minioClient,String bucketName,String objName,Integer expires) throws  Exception{
        try {
            String url = minioClient.presignedGetObject(bucketName, objName, 60 * 60 * 24*expires);
            System.out.println(url);
        } catch(MinioException e) {
            System.out.println("Error occurred: " + e);
        }

    }

方式二:是设置 桶的policy的策略,然后使用http://**:9000/文件路径访问

Guess you like

Origin blog.csdn.net/yu1xue1fei/article/details/118186826