Java之MinIO存储桶和对象API使用

//通过MinioUtil,直接getObjectURL获取url

String bucketName1 = MinioConfig.getBucketName();

String url = MinioConfig.getUrl();

String user = MinioConfig.getAccessKey();

String password = MinioConfig.getSecretKey();

// 初始化Minio客户端

MinioClient minioClient = MinioClient.builder()

.endpoint(url)

.credentials(user, password)

.build();

System.out.println(minioClient);

// BucketExistsArgs btest2 = BucketExistsArgs.builder().bucket("btest2").build();

try {

// boolean existFlag = minioClient.bucketExists(btest2);

// String bucketName = "btest3";

// // 存储桶不存在则创建

// if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {

// minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());

// System.out.printf("%s,创建成功\n", bucketName);

// }else{

// System.out.printf("%s,已存在\n", bucketName);

// }

// List<Bucket> bucketList = minioClient.listBuckets();

// bucketList.forEach(bucket -> {

// System.out.printf("存储桶名:%s,创建时间:%s \n", bucket.name(), bucket.creationDate());

// });

// String bucketName2 = "btest3";

// minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName2).build());

// String bucketName = "java.minio.demo";

// 创建InputStream上传

// File file = new File("D:\\redis.conf");

// InputStream inputStream = new FileInputStream(file);

// long start = System.currentTimeMillis();

// 上传流

// minioClient.putObject(

// PutObjectArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/" + file.getName()).stream(inputStream, inputStream.available(), -1)

// .build());

// inputStream.close();

// 上传文件

// minioClient.uploadObject(

// UploadObjectArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// .filename("D:\\2.png")

// .build());

// System.out.println("uploaded successfully 耗时:" + (System.currentTimeMillis() - start));

// GetObjectResponse 继承了 InputStream类

// GetObjectResponse objectResponse = minioClient.getObject(GetObjectArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// .build());

// System.out.println(objectResponse.bucket());

// System.out.println(objectResponse.object());

// int allBytes = objectResponse.read();//readAllBytes

// System.out.println(allBytes);

//

// // Close the input stream.

// objectResponse.close();

//

//

// minioClient.downloadObject(DownloadObjectArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// .filename("D:\\TempFiles\\2.png") // 必须指定文件名

// .build());

// String objectUrl = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// .method(Method.GET)

// //.expiry(60) // 单位秒

// //.expiry(30, TimeUnit.SECONDS)

// .build());

// System.out.println(objectUrl);

// String objectName = "2021/11/28/2.png";

//

// // 1. 创建一个Post 策略

// // 为存储桶创建一个上传策略,过期时间为7天

// PostPolicy policy = new PostPolicy(bucketName, ZonedDateTime.now().plusDays(7));

// // 设置一个参数key-value,值为上传对象的名称(保存在桶中的名字)

// policy.addEqualsCondition("key", objectName);

// // 添加 Content-Type以"image/"开头,表示只能上传照片

// policy.addStartsWithCondition("Content-Type", "image/");

// // 设置上传文件的大小 10kiB to 10MiB.

// policy.addContentLengthRangeCondition(10 * 1024, 10 * 1024 * 1024);

//

// // 2. 获取策略的 认证令牌、签名等信息

// Map<String, String> formData = minioClient.getPresignedPostFormData(policy);

//

// // 3.模拟第三方,使用 OkHttp调用 Post上传对象

// // 创建 MultipartBody对象

// MultipartBody.Builder multipartBuilder = new MultipartBody.Builder();

// multipartBuilder.setType(MultipartBody.FORM);

// for (Map.Entry<String, String> entry : formData.entrySet()) {

// multipartBuilder.addFormDataPart(entry.getKey(), entry.getValue());

// }

// multipartBuilder.addFormDataPart("key", objectName);// 必须要和策略参数一样

// multipartBuilder.addFormDataPart("Content-Type", "image/png");

// File uploadFile = new File("D:\\TempFiles\\2.jpg");

// // 上传文件的 fileName自定义,这里方便就用 objectName

//

// final MediaType JSON = MediaType.get("image/png; charset=utf-8");

// okhttp3.RequestBody body = okhttp3.RequestBody.create(JSON, uploadFile);

// multipartBuilder.addFormDataPart(

// "file", objectName, body);

// // 使用OkHttp调用Post上传对象

// Request request =

// new Request.Builder()

// .url("http://192.168.1.20:9025/" + bucketName)

// .post(multipartBuilder.build())

// .build();

// OkHttpClient httpClient = new OkHttpClient().newBuilder().build();

// Response response = httpClient.newCall(request).execute();

// if (response.isSuccessful()) {

// System.out.println("uploaded successfully using POST object");

// } else {

// System.out.println("Failed to upload Pictures");

// }

// String bucketName = "java.minio.demo";

// String bucketName2 = "test";

// 将 bucketName中的100元2.jpg文件,复制到bucketName2桶下

// minioClient.copyObject(CopyObjectArgs.builder()

// .source(CopySource.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// .build())

// .bucket(bucketName2)

// .object("2021/11/28/2.png")

// .build());

// String bucketName = "test";

//

// minioClient.removeObject(RemoveObjectArgs.builder()

// .bucket(bucketName)

// .object("2021/11/28/2.png")

// //.versionId("my-versionid") //还可以删除指定版本号的对象

// .build());

// String bucketName = "test";

//

// // 构建需要删除的对象

// List<DeleteObject> objects = new LinkedList<>();

// objects.add(new DeleteObject("2021/11/28/1.jpg"));

// objects.add(new DeleteObject("2021/11/28/2.jpg"));

// objects.add(new DeleteObject("2021/11/28/3.jpg"));

// // 删除

// Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder()

// .bucket(bucketName)

// .objects(objects)

// .build());

// for (Result<DeleteError> result : results) {

// // 删除文件不存在时,不会报错

// DeleteError error = result.get();

// System.out.println("Error in deleting object " + error.objectName() + "; " + error.message());

// }

String bucketName2 = "test";

Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder()

.bucket(bucketName2)

.startAfter("2021")

.prefix("2") // 指定前缀

.maxKeys(100) // 最大数量

.recursive(true)

.build());

for (Result<Item> result : listObjects) {

Item item = result.get();

System.out.println(item.objectName() + "\t" + item.size() );

}

} catch (ErrorResponseException e) {

e.printStackTrace();

} catch (InsufficientDataException e) {

e.printStackTrace();

} catch (InternalException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (InvalidResponseException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (ServerException e) {

e.printStackTrace();

} catch (XmlParserException e) {

e.printStackTrace();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值