com.luna.ali.oss.AliOssBucketApi Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ali-spring-boot-starter Show documentation
Show all versions of ali-spring-boot-starter Show documentation
Ali API Toolkit Contain Oss And AliPay...
The newest version!
package com.luna.ali.oss;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.*;
import com.luna.ali.config.AliOssConfigProperties;
import org.apache.commons.lang3.StringUtils;
/**
* @Package: com.luna.ali.oss
* @ClassName: AliOssBucketApi
* @Author: luna
* @CreateTime: 2020/8/21 21:54
* @Description:
*/
public class AliOssBucketApi {
/**
* 创建对象存储空间
*
* @param bucketName
* 只能包括小写字母、数字和短划线(-)。
* 必须以小写字母或者数字开头和结尾。
* 长度必须在3~63字节之间。
* @param aliOssConfigProperties
*/
public void createBucket(String bucketName, String accress, String type, AliOssConfigProperties aliOssConfigProperties) {
// 创建OSSClient实例。
OSS ossClient = aliOssConfigProperties.getOssClient(false);
// 创建CreateBucketRequest对象。
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
// 设置存储空间的权限为公共读,默认是私有。
if (StringUtils.isNotEmpty(accress)) {
createBucketRequest.setCannedACL(CannedAccessControlList.parse(accress));
}
// 设置存储空间的存储类型为低频访问类型,默认是标准类型。
if (StringUtils.isNotEmpty(type)) {
createBucketRequest.setStorageClass(StorageClass.parse(type));
}
// 创建存储空间。
ossClient.createBucket(createBucketRequest);
// 关闭OSSClient。
ossClient.shutdown();
}
/**
* 列举所有的存储空间
*
* @param aliOssConfigProperties
* @return
*/
public List listBuckets(String prefix, Integer maxKeys, String marker, AliOssConfigProperties aliOssConfigProperties) {
// 创建OSSClient实例。
OSS ossClient = aliOssConfigProperties.getOssClient(false);
// 列举存储空间。
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 列举指定前缀的存储空间。
if (StringUtils.isNotEmpty(prefix)) {
listBucketsRequest.setPrefix(prefix);
}
// 限定此次列举存储空间的个数为500。默认值为100,最大值为1000。
if (maxKeys != null) {
listBucketsRequest.setMaxKeys(maxKeys);
}
// 列举指定marker之后的存储空间。
if (StringUtils.isNotEmpty(marker)) {
listBucketsRequest.setMarker(marker);
}
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
List buckets = bucketList.getBucketList();
// 关闭OSSClient。
ossClient.shutdown();
return buckets;
}
/**
* 判断存储空间是否存在
*
* @param bucketName
* @param configValue
* @return
*/
public boolean isBucket(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
boolean exists = ossClient.doesBucketExist(bucketName);
// 关闭OSSClient。
ossClient.shutdown();
return exists;
}
/**
* 获取存储空间的地域
*
* @param bucketName
* @param configValue
* @return
*/
public String getBucketRegion(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
String location = ossClient.getBucketLocation(bucketName);
// 关闭OSSClient。
ossClient.shutdown();
return location;
}
/**
* 获取存储空间的信息
*
* @param bucketName
* @param configValue
* @return
*/
public BucketInfo getBucketInfo(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 存储空间的信息包括地域(Region或Location)、创建日期(CreationDate)、拥有者(Owner)、权限(Grants)等。
BucketInfo info = ossClient.getBucketInfo(bucketName);
// 获取地域。
String location = info.getBucket().getLocation();
// 获取创建日期。
Date creationDate = info.getBucket().getCreationDate();
// 获取拥有者信息。
Owner owner = info.getBucket().getOwner();
// 获取容灾类型。
DataRedundancyType dataRedundancyType = info.getDataRedundancyType();
// 关闭OSSClient。
ossClient.shutdown();
return info;
}
/**
* 设置存储空间访问权限
*
* @param bucketName
* @param configValue
*
* 私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 CannedAccessControlList.Private
* 公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 CannedAccessControlList.PublicRead
* 公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 CannedAccessControlList.PublicReadWrite
*/
public void setBucketAccess(String bucketName, String access, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 设置存储空间的访问权限为私有。
ossClient.setBucketAcl(bucketName, CannedAccessControlList.parse(access));
// 关闭OSSClient。
ossClient.shutdown();
}
/**
* 获取存储空间的访问权限
*
* @param bucketName
* @param configValue
* @return
*/
public String getBucketAccess(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 获取存储空间的访问权限。
AccessControlList acl = ossClient.getBucketAcl(bucketName);
// 关闭OSSClient。
ossClient.shutdown();
return acl.toString();
}
/**
* 删除存储空间
*
* @param bucketName
* @param configValue
*/
public void deleteBucket(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 删除存储空间。
ossClient.deleteBucket(bucketName);
// 关闭OSSClient。
ossClient.shutdown();
}
/**
* 设置Bucket标签
*
* @param tags
* @param bucketName
* @param configValue
*/
public void setBucketTag(Map tags, String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 设置Bucket标签。
SetBucketTaggingRequest request = new SetBucketTaggingRequest(bucketName);
Iterator> entries = tags.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = entries.next();
request.setTag(entry.getKey(), entry.getValue());
}
ossClient.setBucketTagging(request);
// 关闭OSSClient。
ossClient.shutdown();
}
/**
* 获取存储空间标签
*
* @param bucketName
* @param configValue
* @return
*/
public Map getBucketTags(String bucketName, AliOssConfigProperties configValue) {
// 创建OSSClient实例。
OSS ossClient = configValue.getOssClient(false);
// 获取Bucket标签信息。
TagSet tagSet = ossClient.getBucketTagging(new GenericRequest(bucketName));
Map tags = tagSet.getAllTags();
// 关闭OSSClient。
ossClient.shutdown();
return tags;
}
}