本篇文章主要说一下在Minio中通过程序上传后的图片,返回的地址无法对外访问的问题。
MinioClient minioClient = new MinioClient(minio_url, minio_name, minio_pass);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
String objectName = ymd + "/" + UUID.randomUUID().toString() + (suffix != null ? suffix : "");
minioClient.putObject(bucketName, objectName, inputStream, contentType);
String url = minioClient.getObjectUrl(bucketName, objectName);
这里程序得到的地址,如果你想在浏览器直接访问是不行的。如果想要访问,需要对Minio进行一些设置。
Minio的称之为policy 即桶策略。如果想要直接访问图片,需要设置Bucket的访问策略。
官方文档 https://docs.minio.io/cn/minio-client-complete-guide.html#mb
下面介绍两种方法来实现永久访问,两种方法效果是一样的。
一、通过管理界面实现
登录后台管理界面,在右下角有个红色的加号图标,点击它,然后会看到下面的效果
点击create bucket ,输入要创建的bucket,如test
回车就可创建成功。
创建成功之后对bucket进行编辑。在页面的右上角。找到刚刚创建的test bucket。如下图
点击那三个点,选择Edit policy ,会弹出下面的弹窗。
在Prefix中输入* ,即允许所有访问。右边的选项选择 Read and write。
然后点击Add 按钮就可以了。
-----------------------------------------------------------------------------------------------------------------------------------------
二、通过Minio提供的客户端来实现
Minio单独提供了一个客户端来设置Minio的服务端。
1、下载客户端程序
下载地址 https://dl.minio.io/client/mc/release/windows-amd64/mc.exe
2、启动一个cmd窗口,进入mc.exe的目录
输入 .\mc.exe --h 可以查看mc.exe的命令帮助。
3、设置服务端
使用 minio client 将自己的 minio server 添加到 mc 的配置管理,命令如下
.\mc.exe config host add minio http://192.168.50.179:9000 3K2287Q20OW3HWQ2FJXJ L0eTMaBzVQwUgbeuo05f+qmSA
buZiWt4yZfDzrMv
Added `minio` successfully.
此命令将 http://192.168.50.179:9000 取一个别名 minio ,并交给mc进行配置管理。
4、查看minio中的桶,命令
.\mc.exe ls minio
[2019-02-18 20:34:25 CST] 0 B asiatrip\
[2019-02-18 21:15:55 CST] 0 B tonnyyy\
[2019-03-28 20:54:28 CST] 0 B xzspfj\
5、设置桶的访问策略,命令
.\mc.exe policy public minio/xzspfj/20190328/
Access permission for `minio/xzspfj/20190328/` is set to `public`
通过以上步骤,图片就可以直接通过地址进行访问了。