package zyf.com.sprintboot01;
import io.minio.*;
import io.minio.errors.ErrorResponseException;
import okhttp3.OkHttpClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import javax.net.ssl.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.stream.Collectors;
@SpringBootTest
class Sprintboot01ApplicationTests {
String endpoint = "https://192.168.2.37:9005";//minio api地址
String accessKey = "mKVyfc4IHF1LDHSZUp89";//minio accessKey
String secretKey = "Kzqx3JjDJYUp3ZN0HZoikB1wm79HcsDKzEXx6HuA";//minio secretKey
String bucketName = "bucket01";//文件存储的桶名称
String filename = "";
String filepath = "";
String encryptionKeyString = "12345678901234561234567890123456";//sse-c中客户端长度32位的加解密秘钥
@Test
void contextLoads() {
}
@Test
void MinioTest() {
//测试数据上传
testUploadString();
//测试数据下载
testDownLoadString();
//测试数据加密上传
testUploadStringEncryt();
//测试加密数据下载
testDownLoadStringEncryt();
//测试文件上传
testUploadFile();
//测试文件加密上传
testUploadFileEnctry();
//测试文件加密下载
testDownLoadFileEncryt();
}
/**
* 上传对象文件(不加密)
*/
void testUploadString(){
try {
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
//构建参数
final PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(bucketName)
.object("my-object")
.contentType("application/octet-stream")
.stream(new ByteArrayInputStream("Hello, World!".getBytes()), "Hello, World!".getBytes().length, -1)
.build();
// 使用putObject上传文件到存储桶,文件名为"my-object"
minioClient.putObject(putObjectArgs);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 上传对象文件(加密)
*/
void testUploadStringEncryt(){
try {
String content = "Hello, World!";
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
// 创建Cipher对象进行加密
SecretKeySpec secretKeySpec=getSecretKeySpec();
// 打开文件输入流进行加密
try (InputStream inputStream = new ByteArrayInputStream(content.getBytes())) {
//构建参数
final PutObjectArgs args = PutObjectArgs.builder()
.bucket(bucketName)
.object("my-object-encrty")
.contentType("application/octet-stream")
.stream(inputStream, inputStream.available(), -1)
.sse(new ServerSideEncryptionCustomerKey(secretKeySpec))
.build();
// 上传加密后的文件到MinIO,并设置加密头信息
minioClient.putObject(args);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 下载普通对象文件(不加密)
*/
void testDownLoadString(){
String objName = "my-object";
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
try
{
InputStream inputStream = minioClient
.getObject(GetObjectArgs.builder().bucket(bucketName).object(objName).build());
String str = new BufferedReader(new InputStreamReader(inputStream))
.lines().collect(Collectors.joining(System.lineSeparator()));
System.out.println(str);
} catch (Throwable ex) {
}
}
/**
* 下载对象文件(加密)
*/
void testDownLoadStringEncryt(){
String objName = "my-object-encrty";
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
try
{
// 创建Cipher对象进行加密
SecretKeySpec secretKeySpec=getSecretKeySpec();
//region 获取对象文件方法一
//构建参数对象
final GetObjectArgs getObjectArgs = GetObjectArgs.builder()
.bucket(bucketName)
.object(objName)
.ssec(new ServerSideEncryptionCustomerKey(secretKeySpec))
.build();
//获取对象
InputStream inputStream = minioClient.getObject(getObjectArgs);
//对象转换成字符串
String str = new BufferedReader(new InputStreamReader(inputStream))
.lines().collect(Collectors.joining(System.lineSeparator()));
System.out.println(str);
// endregion
//region 获取对象文件方法二
final DownloadObjectArgs downloadObjectArgs = DownloadObjectArgs.builder()
.bucket(bucketName)
.filename("my-object-encrty")
.ssec(new ServerSideEncryptionCustomerKey(secretKeySpec))
.filename("D:\\javaEv\\minio\\test\\my-object-encrty.txt")
.object("my-object-encrty")
.build();
minioClient.downloadObject(downloadObjectArgs);
//endregion
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
/**
* 上传文件(不加密)
*/
void testUploadFile(){
try {
String objName = "my-object-file.jpg";
String filePath = "C:\\Users\\Administrator\\Pictures\\Camera Roll\\d970fb064e63884043ab6a62534466bf.jpg";
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
// 使用putObject上传文件到存储桶,文件名为"my-object"
InputStream is = new FileInputStream(filePath);
//构建参数
final PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(bucketName)
.object(objName)
.contentType("application/octet-stream")
.stream(is, is.available(), -1)
.build();
//上传文件
minioClient.putObject(putObjectArgs);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 上传文件(加密)
*/
void testUploadFileEnctry(){
try {
String objName = "my-object-file-enctry.jpg";
String filePath = "C:\\Users\\Administrator\\Pictures\\Camera Roll\\d970fb064e63884043ab6a62534466bf.jpg";
// 使用MinIO服务器的URL、访问密钥和秘密密钥初始化MinioClient
MinioClient minioClient = getMinioClient();
SecretKeySpec secretKeySpec=getSecretKeySpec();
// 使用putObject上传文件到存储桶,文件名为"my-object"
InputStream is = new FileInputStream(filePath);
//构建参数
final PutObjectArgs putObjectArgs = PutObjectArgs.builder()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源内容为java操作minio文件上传下载,也涉及到加密操作,主要是minio的SSE-C模式,具体内容在Sprintboot01ApplicationTests.MinioTest()中。 包含以下内容: //1.测试数据上传 testUploadString(); //2.测试数据下载 testDownLoadString(); //3..测试数据加密上传 testUploadStringEncryt(); //4.测试加密数据下载 testDownLoadStringEncryt(); //5.测试文件上传 testUploadFile(); //6.测试文件加密上传 testUploadFileEnctry(); //7.测试文件加密下载 testDownLoadFileEncryt();
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 15 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
zengyufeng203615
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)