package com.sysware.soft602.minio;
import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.Bucket;
import org.apache.commons.io.IOUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MinioUtil {
public static void createBucket(String bucketName, MinioClient minioClient) {
boolean isExist = false;
try {
isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
System.out.println("检查Minio桶({" + bucketName + "})是否存在失败");
e.printStackTrace();
}
if (!isExist) {
try {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
System.out.println("创建Minio桶({" + bucketName + "})是否存在失败");
e.printStackTrace();
}
}
}
public static List<Bucket> getAllBuckets(MinioClient client) throws Exception {
return client.listBuckets();
}
/**
* 根据bucketName删除信息
*
* @param bucketName bucket名称
*/
public static void removeBucket(String bucketName, MinioClient client) throws Exception {
client.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
}
/**
* 获取文件外链
*
* @param bucketName bucket名称
* @param objectName 文件名称
* @param expires 过期时间 <=7
* @return url
*/
public static String getObjectURL(String bucketName, String objectName, int expires, MinioClient client) throws Exception {
return client.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(objectName).method(Method.GET).expiry(expires).build());
}
/**
* 获取文件
*
* @param bucketName bucket桶名称
* @param objectName 文件名称
* @return 二进制流
*/
public static InputStream getObject(String bucketName, String objectName, MinioClient client) throws Exception {
return client.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build());
}
/**
* 附件下载
*
* @param attachmentName 附件原始名称
* @param bucketName 桶名称
* @param attachmentNameInServer 存储在文件服务器中的附件名称
* @param httpServletResponse httpServletResponse
*/
public static void download(String attachmentName, String bucketName, String attachmentNameInServer, HttpServletResponse httpServletResponse, MinioClient client) {
OutputStream toClient = null;
InputStream inputStream = null;
try {
StatObjectResponse statObjectResponse = client.statObject(StatObjectArgs.builder().bucket(bucketName).object(attachmentNameInServer).build());
inputStream = client.getObject(GetObjectArgs.builder().bucket(bucketName).object(attachmentNameInServer).build());
httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(attachmentName, "UTF-8"));
httpServletResponse.addHeader("Content-Length", "" + statObjectResponse.size());
httpServletResponse.setContentType(statObjectResponse.contentType());
httpServletResponse.setCharacterEncoding("UTF-8");
toClient = new BufferedOutputStream(httpServletResponse.getOutputStream());
IOUtils.copy(inputStream, toClient);
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(toClient);
}
}
/**
* 上传文件
*
* @param bucketName bucket名称
* @param objectName 文件名称
* @param stream 文件流
* @param size 大小
* @param contextType 类型
* @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject
*/
public static void putObject(String bucketName, String objectName, InputStream stream, long size, String contextType, MinioClient client) throws Exception {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "text/plain; charset=utf-8");
client.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(stream, size, -1)
.headers(headers)
.contentType(contextType)
.build());
}
/**
* 删除文件
*
* @param bucketName bucket名称
* @param objectName 文件名称
* @throws Exception
*/
public static void removeObject(String bucketName, String objectName, MinioClient client) throws Exception {
client.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
}
}
Java实现MinIO文件服务器
5星 · 超过95%的资源 需积分: 3 89 浏览量
2022-07-04
15:28:31
上传
评论
收藏 23.41MB RAR 举报
天空阁楼
- 粉丝: 10
- 资源: 11
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论10