Minio基本使用(Java)
Posted 码灵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minio基本使用(Java)相关的知识,希望对你有一定的参考价值。
1 Minio简介
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
官方地址https://min.io/
1.1 支持非结构化的数据存储
1.2 分布式部署
分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式Minio避免了单点故障。
在大数据领域,通常的设计理念都是无中心和分布式。Minio分布式模式可以帮助你搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。
Notes:分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
2 使用docker安装并启动Minio服务
2.1 docker安装minio
可以使用:docker search minio查看docker仓库中的各个版本,可选择装指定版本
docker pull minio/minio
docker run -p 9000:9000 minio/minio server /data
安装后使用浏览器访问http://127.0.0.1:9000,如果可以访问,则表示minio已经安装成功。登录名和密码默认:minioadmin
创建bucket test,在springboot中会使用。
2.2 其他安装方式
可参考https://docs.min.io/docs/minio-quickstart-guide.html
3 Springboot 中操作minio
3.1 添加操作依赖
<dependency>
<groupId>com.jlefebure</groupId>
<artifactId>spring-boot-starter-minio</artifactId>
<version>1.1</version>
</dependency>
3.2 配置全局参数
# Minio Host
spring.minio.url=http://10.21.80.17:9000/
# Minio Bucket name for your application
spring.minio.bucket=test
# Minio access key (login)
spring.minio.access-key=minioadmin
# Minio secret key (password)
spring.minio.secret-key=minioadmin
## MULTIPART (MultipartProperties)
# Enable multipart uploads
spring.servlet.multipart.enabled=true
# Threshold after which files are written to disk.
spring.servlet.multipart.file-size-threshold=2KB
# Max file size.
spring.servlet.multipart.max-file-size=500MB
# Max Request Size
spring.servlet.multipart.max-request-size=1024MB
3.3 测试案例:
import com.jlefebure.spring.boot.minio.MinioConfigurationProperties;
import com.jlefebure.spring.boot.minio.MinioException;
import com.jlefebure.spring.boot.minio.Minioservice;
import io.minio.messages.Item;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLConnection;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
@RestController
public class MinioController
@Autowired
private MinioService minioService;
@Autowired
private MinioConfigurationProperties configurationProperties;
@GetMapping("/files")
public List<Item> testMinio() throws MinioException
return minioService.list();
@GetMapping("files/object")
public void getObject(@PathVariable("object") String object, HttpServletResponse response) throws com.jlefebure.spring.boot.minio.MinioException, IOException
InputStream inputStream = minioService.get(Paths.get(object));
InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
// Set the content type and attachment header.
response.addHeader("Content-disposition", "attachment;filename=" + object);
response.setContentType(URLConnection.guessContentTypeFromName(object));
// Copy the stream to the response's output stream.
IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
@PostMapping
public void addAttachement(@RequestParam("file") MultipartFile file) throws IOException
System.out.println(file);
String filename = file.getOriginalFilename();
Path path = Paths.get("/png/"+filename);
String url = configurationProperties.getUrl() + "/" + configurationProperties.getBucket() + path.toAbsolutePath();
System.out.println(url);
try
minioService.upload(path, file.getInputStream(), file.getContentType());
catch (MinioException e)
throw new IllegalStateException("The file cannot be upload on the internal storage. Please retry later", e);
catch (IOException e)
throw new IllegalStateException("The file cannot be read", e);
minio简单安装与使用
最近使用公司自己研发的框架,了解到一种文件上传服务器-minio。
minio简介
MinIO is High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storage service. Using MinIO build high performance infrastructure for machine learning, analytics and application data workloads.
MinIO高性能对象存储是Apache许可下发布版本。它与Amazon S3 API兼容的云存储服务。使用MinIO构建高性能的基础设施为机器学习、分析和应用程序数据的工作量。
minio安装
官网地址:https://docs.min.io/
我们本次使用docker镜像安装
命令
docker pull minio/minio:edge
docker run -p 9000:9000 minio/minio:edge server /data
启动后日志
注意图中隐藏部分是默认的key和secret,需要我们自己修改默认账号。
登录访问:
http://127.0.0.1:9000
支持minio文件管理服务我们就安装好了,是不是很简单呢。
通过java连接minio,使用minio客户端来上传文件
java手册文档:https://docs.min.io/docs/java-client-quickstart-guide
首先创建一个bucket
然后对改2020桶进行配置,可读可写
引入依赖, 版本看自己需要
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>xxx</version>
</dependency>
本人用的阿里云仓库下载的6.0.10jar包
地址:http://archiva-maven-storage-prod.oss-cn-beijing.aliyuncs.com/repository/central/io/minio/minio/6.0.10/minio-6.0.10.jar?Expires=1581841941&OSSAccessKeyId=LTAIfU51SusnnfCC&Signature=JxVcwM%2BIIOC30mFq2gUXEklwIcw%3D
java 通过minio上传文件示例
MinioClient minioClient = new MinioClient("http://localhost", 9000,
"key",
"secret");
minioClient.putObject("2020","TEST.rtf", "/TEST.rtf");
登录minio网页,查看文件是否已上传,如下图。
后言
minio的使用方法很多,大家自己查看官方文档,这里只是做了简要介绍与使用,一起学习。。。
以上是关于Minio基本使用(Java)的主要内容,如果未能解决你的问题,请参考以下文章