上期有给大家介绍如何分布式安装Minio服务,本期将着重给大家介绍Java如何操作Minio,供大家学习参考。
官网介绍:
适用于与Amazon S3兼容的云存储的MinIO Java SDK。
MinIO Java Client SDK提供简单的API来访问任何与Amazon S3兼容的对象存储服务。
官网文档地址:https://docs.min.io/cn/java-client-quickstart-guide.html
Java 1.8或更高版本:
Maven项目创建不太会的同学请自行百度学习,这里不再赘述
在官网官方文档上可以看到官方的依赖版本是比较低的,猜测应该是很久没更新。下面是官方文档提供的依赖:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.10</version>
</dependency>
这里先不理他,我这里的示例deomo项目,是使用的SpringJUnit4测试,所以除了minio依赖,也依赖了spring的必须报,完整的pom文件依赖如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.4.RELEASE</spring.version>
</properties>
<dependencies>
<!-- springframe start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 数据库访问封装 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- springframe end -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--minio文件服务器 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
</dependencies>
src/main/resources/application-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd">
<context:component-scan base-package="com.yunzin">
</context:component-scan>
</beans>
src/test/java/com/yunzin/AppTest
参数 | 说明 |
---|---|
Endpoint | 对象存储服务的URL |
Access Key | Access key就像用户ID,可以唯一标识你的账户。 |
Secret Key | Secret key是你账户的密码。 |
其中Access Key,Secret Key则是上一期中run.sh文件中配置的对应值
同时还需注意的是,在上传文件之前,需要先创建好bucketName,不然会上传失败。
文件上传测试类代码:
package com.yunzin;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:application-context.xml" })
public class AppTest {
/**
* 连接url
*/
private static String endpoint = "http://47.102.117.62:9000";
/**
* 用户名
*/
private static String accesskey = "minio";
/**
* 密码
*/
private static String secretKey = "minio#@!";
private static String bucketName = "test";
@Test
public void testUploadFile() {
File file = new File("D:\\test.jpeg");
// 获取文件的真实名称
String orgfileName = file.getName();
try {
// 获取文件的输入流信息
InputStream in = new FileInputStream(file);
PutObjectOptions options = new PutObjectOptions(file.length(), -1);
// 上传到文件服务器:桶key,文件名,文件的io信息
minioClient().putObject(bucketName, orgfileName, in, options);
} catch (Exception e) {
e.printStackTrace();
}
}
public static MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
return new MinioClient(endpoint, accesskey, secretKey);
}
}
以上测试方法成功执行后,登录到服务器地址,就可以看到刚刚上传的文件。
具体的内容可以查看官网介绍:https://docs.min.io/docs/java-client-api-reference