在MinIO上使用java实现文件的上传和下载。
1.1 mvn配置
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.0</version>
</dependency>
1.2 Java源文件
package com.example.demo.controller;
import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import lombok.SneakyThrows;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.util.FastByteArrayOutputStream;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class MyMinIO {
private MinioClient minioClient;
public MyMinIO() {
/*
this.minioClient = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("minioroot", "minioroot")
.build();
*/
// Configure the builder
MinioClient.Builder builder = MinioClient.builder();
builder.endpoint("http://127.0.0.1:9000");
builder.credentials("minioroot", "minioroot");
// Init the builder
this.minioClient = builder.build();
}
@SneakyThrows
private boolean isBucketExist(String bucketName) {
// Set the builder
BucketExistsArgs.Builder builder = BucketExistsArgs.builder();
builder.bucket(bucketName);
BucketExistsArgs bucketExistsArgs = builder.build();
boolean isExist = this.minioClient.bucketExists(bucketExistsArgs);
if (isExist) {
System.out.println("The bucket is exist! ");
return true;
} else {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
System.out.println("Create bucket is success! ");
return true;
}
}
@SneakyThrows
public boolean uploadObject() {
String bucketName = "mybucket";
String filename = "my_data1.png";
if (!this.isBucketExist(bucketName)) {
return false;
}
/*
UploadObjectArgs uploadObjectArgs = UploadObjectArgs
.builder()
.bucket(bucketName)
.object(filename)
.filename("/home/yyp/my_data.png")
.build();
*/
UploadObjectArgs.Builder builder = UploadObjectArgs.builder();
builder.bucket(bucketName);
builder.object(filename);
builder.filename("/home/yyp/my_data.png");
UploadObjectArgs uploadObjectArgs = builder.build();
this.minioClient.uploadObject(uploadObjectArgs);
return true;
}
@SneakyThrows
public boolean removeObject(){
String bucketName = "mybucket";
String filename = "my_data1.png";
/*
this.minioClient.removeObject(RemoveObjectArgs
.builder()
.bucket(bucketName)
.object(filename)
.build());
*/
RemoveObjectArgs.Builder builder = RemoveObjectArgs.builder();
builder.bucket(bucketName);
builder.object(filename);
RemoveObjectArgs removeObjectArgs = builder.build();
this.minioClient.removeObject(removeObjectArgs);
return true;
}
@SneakyThrows
public boolean downloadObject(){
DownloadObjectArgs.Builder builder = DownloadObjectArgs.builder();
builder.bucket("mybucket");
builder.object("my_data.png");
builder.filename("/home/yyp/my_data.png");
DownloadObjectArgs downloadObjectArgs = builder.build();
this.minioClient.downloadObject(downloadObjectArgs);
return true;
}
@SneakyThrows
public boolean downloadGetObject() {
String bucketName = "mybucket";
String filename = "my_data.png";
if (!this.isBucketExist(bucketName)) {
return false;
}
GetObjectArgs.Builder builder = GetObjectArgs.builder();
builder.bucket(bucketName);
builder.object(filename);
GetObjectArgs objectArgs = builder.build();
/*
GetObjectArgs objectArgs = GetObjectArgs.builder()
.bucket(bucketName)
.object(filename)
.build();
*/
GetObjectResponse response = minioClient.getObject(objectArgs);
// Read the byte stream of data
byte[] buff = new byte[1024];
FastByteArrayOutputStream fbaos = new FastByteArrayOutputStream();
int len = 0;
while ((len = response.read(buff)) != -1) {
fbaos.write(buff, 0, len);
}
fbaos.flush();
// Create the file
File file = new File("/home/yyp/" + filename);
if (!file.exists()) {
file.createNewFile();
}
// Write the file
OutputStream outputStream = new FileOutputStream(file);
outputStream.write(fbaos.toByteArray());
outputStream.flush();
fbaos.close();
System.out.println("Download file is success! ");
return true;
}
@SneakyThrows
public void deletMultiObject(){
List<DeleteObject> objects = new LinkedList<>();
objects.add(new DeleteObject("my_data.png"));
objects.add(new DeleteObject("my_data1.png"));
RemoveObjectsArgs.Builder builder = RemoveObjectsArgs.builder();
builder.bucket("mybucket");
builder.objects(objects);
RemoveObjectsArgs removeObjectsArgs = builder.build();
Iterable<Result<DeleteError>> results = this.minioClient.removeObjects(removeObjectsArgs);
for (Result<DeleteError> result : results) {
DeleteError error = result.get();
System.out.println("Error in deleting object " + error.objectName() + "; " + error.message());
}
}
public static void main(String[] args) {
MyMinIO minio = new MyMinIO();
minio.uploadObject();
// minio.downloadGetObject();
// minio.downloadObject();
// minio.removeObject();
// minio.deletMultiObject();
}
}