最近在minio官网照着使用docker安装minio的时候,运行没问题,在控制台都可以进行正常操作,唯独使用javasdk操作时,总是抛出xml解析问题,debug一番发现是响应返回的问题。没有解决。后在某篇博客处找到了原因和解决方案,博客链接放底部。此处展示已修改后的方案。
docker安装
- 先创建基本挂载文件夹
mkdir /root/minio/data
mkdir /root/minio/config
- 运行容器,没有镜像会自动下载最新版。java操作minio的时候出现的xml解析错误也是在这里,官网最新版是开放9000端口,再映射一个静态端口作为控制台端口。在这一部我理解错了,我以为只需要开发9000端口进入就行,映射是内部做的,所以xml解析不到东西。因为响应的地址完全不通。以下是正确运行命令。云服务器记得开放安全组这两个端口。9000、9090
docker run -p 9000:9000 -p 9090:9090 --name minio -v /root/minio/data:/data -v /root/minio/config:/root/.minio -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=password" minio/minio server /data --console-address ":9090"
- 启动成功后,访问浏览器:localhost:9090.即可进入控制台.输入对应的admin/password.
以下是JAVA代码
- mavan依赖。截至目前为最新版
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.0</version>
</dependency>
- JAVA代码,上传设置.注意修改一下自己的ip地址和账号密码。端口一定是9000.api端口,不可是控制台端口
MinioClient client = MinioClient.builder()
.credentials("admin", "password")
.endpoint("http://localhost:9000")
.build();
boolean mino = client.bucketExists(BucketExistsArgs.builder().bucket("miniotest").build());
if (!mino){
client.makeBucket(MakeBucketArgs.builder().bucket("miniotest").build());
}
File file = new File("H:/1.jpg");
FileInputStream fileInputStream = new FileInputStream(file);
ObjectWriteResponse miniotest = client.putObject(PutObjectArgs.builder()
.bucket("miniotest")
.stream(fileInputStream,file.length(),-1)
.object("2.jpg")
.build());
运行,上传成功。
原文地址:https://blog.youkuaiyun.com/Duck_Duck_/article/details/120138535?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163469659416780271544945%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163469659416780271544945&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-120138535.first_rank_v2_pc_rank_v29&utm_term=minio%E6%8A%A5%E9%94%99Message%3A+%E6%96%87%E6%A1%A3%E4%B8%AD%E6%A0%B9%E5%85%83%E7%B4%A0%E5%89%8D%E9%9D%A2%E7%9A%84%E6%A0%87%E8%AE%B0%E5%BF%85%E9%A1%BB%E6%A0%BC%E5%BC%8F%E6%AD%A3%E7%A1%AE%E3%80%82&spm=1018.2226.3001.4187