package com.stylefeng.guns.modular.system.util.qianyuntong;
|
|
import com.heredata.hos.HOS;
|
import com.heredata.hos.HOSClientBuilder;
|
import com.heredata.hos.model.CreateBucketRequest;
|
import com.heredata.hos.model.HOSObject;
|
import com.heredata.hos.model.PutObjectRequest;
|
import com.heredata.hos.model.PutObjectResult;
|
import com.heredata.hos.model.bucket.Bucket;
|
import com.heredata.model.VoidResult;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.io.InputStream;
|
|
/**
|
* OSS 工具类
|
* @author zhibing.pu
|
* @Date 2025/6/23 17:50
|
*/
|
@Slf4j
|
public class NCOSSUtil {
|
|
/**
|
* 创建桶
|
* @param bucketName
|
* @return
|
*/
|
public static Boolean createBucket(String bucketName) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
// 创建请求对象,并且设置创建桶名为"example"的桶
|
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
|
VoidResult result = hos.createBucket(createBucketRequest);
|
if (result.getResponse().isSuccessful()) {
|
log.info("创建桶成功:" + bucketName);
|
return true;
|
}
|
} catch (Exception e){
|
log.info("创建桶失败:" + bucketName);
|
e.printStackTrace();
|
}
|
return false;
|
}
|
|
|
/**
|
* 查询桶详情
|
* @param bucketName
|
* @return
|
*/
|
public static Bucket getBucketInfo(String bucketName) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
// 查询桶名为"example"的详情
|
Bucket bucket = hos.getBucketInfo(bucketName);
|
return bucket;
|
} catch (Exception e){
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 删除桶
|
* @param bucketName
|
* @return
|
*/
|
public static Boolean deleteBucket(String bucketName) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
VoidResult result = hos.deleteBucket(bucketName);
|
if (result.getResponse().isSuccessful()) {
|
log.info("删除桶成功:" + bucketName);
|
return true;
|
}
|
} catch (Exception e){
|
log.info("删除桶成功:" + bucketName);
|
e.printStackTrace();
|
}
|
return false;
|
}
|
|
|
/**
|
* 设置桶策略
|
* @param bucketName 桶名
|
* @param policyText 策略规则字符串
|
* {
|
* // 策略配置的版本号,由用户定义
|
* "Version": "2012-10-17",
|
* // 策略规则配置,可指定多条策略规则
|
* "Statement": [{
|
* // 策略规则ID,可用户指定,如不指定则服务自动生成一条
|
* "Sid": "sid",
|
* // 策略规则指定的HOS API接口标识,可参照下表填写
|
* "Action": [
|
* "action"
|
* ],
|
* // 策略规则效果,具体表现为允许或拒绝,有效值为Allow(允许),Deny(拒绝);
|
* "Effect": "Allow",
|
* // 策略规则指定的资源参照下面resource配置
|
* "Resource": "resource",
|
* // 策略规则指定的授权人 参照下面Principal配置
|
* "Principal": {
|
* "HWS": [
|
* "account_id:root"
|
* ]
|
* }
|
* }
|
* ]
|
* }
|
* @return
|
*/
|
public static Boolean setBucketPolicy(String bucketName, String policyText) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
// 桶策略字符串
|
try {
|
VoidResult result = hos.setBucketPolicy(bucketName, policyText);
|
if (result.getResponse().isSuccessful()) {
|
log.info("设置桶策略成功:" + bucketName);
|
return true;
|
}
|
} catch (Exception e) {
|
log.info("设置桶策略失败:" + bucketName);
|
e.printStackTrace();
|
}
|
return false;
|
}
|
|
|
/**
|
* 上传对象
|
* @param bucketName 桶名称
|
* @param key 存储文件名
|
* @param inputStream 上传文件流
|
* @return 对象唯一标识
|
*/
|
public static String putObject(String bucketName, String key, InputStream inputStream) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key , inputStream);
|
PutObjectResult example = hos.putObject(putObjectRequest);
|
if (example.getResponse().isSuccessful()) {
|
log.info("上传对象成功:" + bucketName + "--->" + key);
|
return example.getETag();
|
}
|
} catch (Exception e) {
|
log.info("上传对象成功:" + bucketName);
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 查询对象
|
* @param bucketName 桶名称
|
* @param key 存储文件名
|
* @return
|
*/
|
public static HOSObject getObject(String bucketName, String key) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
HOSObject example = hos.getObject(bucketName, key);
|
if (example.getResponse().isSuccessful()) {
|
log.info("查询对象成功:" + bucketName + "--->" + key);
|
return example;
|
}
|
} catch (Exception e) {
|
log.info("查询对象失败:" + bucketName);
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 删除对象
|
* @param bucketName 桶名称
|
* @param key 存储文件名
|
* @return
|
*/
|
public static Boolean deleteObject(String bucketName, String key) {
|
/**
|
* endPoint:HOS的基础路径(公共前缀)
|
* account:账户的ID
|
* accessKey:向UAAS服务请求到的access_key
|
* secretKey:向UAAS服务请求到的secret_key
|
*/
|
HOS hos = new HOSClientBuilder().build(QianYunTongProperties.endPoint, QianYunTongProperties.account, QianYunTongProperties.accessKey, QianYunTongProperties.secretKey);
|
try {
|
VoidResult example = hos.deleteObject(bucketName, key);
|
if (example.getResponse().isSuccessful()) {
|
log.info("删除对象成功:" + bucketName + "--->" + key);
|
return true;
|
}
|
} catch (Exception e) {
|
log.info("删除对象失败:" + bucketName + "--->" + key);
|
e.printStackTrace();
|
}
|
return false;
|
}
|
}
|