liujie
7 天以前 1d07ee4cfa2965587f092e5295ce96f4079268b4
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/NCOSSUtil.java
@@ -1,243 +1,243 @@
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 com.stylefeng.guns.modular.system.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import java.io.InputStream;
/**
 * OSS 工具类
 * @author zhibing.pu
 * @Date 2025/6/23 17:50
 */
@Slf4j
public class NCOSSUtil {
   private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();;
   /**
    * 创建桶
    * @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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      // 桶策略字符串
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
      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;
   }
}
//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 com.stylefeng.guns.modular.system.util.SpringContextsUtil;
//import lombok.extern.slf4j.Slf4j;
//
//import java.io.InputStream;
//
///**
// * OSS 工具类
// * @author zhibing.pu
// * @Date 2025/6/23 17:50
// */
//@Slf4j
//public class NCOSSUtil {
//
//   private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig();;
//
//   /**
//    * 创建桶
//    * @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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      // 桶策略字符串
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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(qianYunTongConfig.getEndPoint(), qianYunTongConfig.getAccount(), qianYunTongConfig.getAccessKey(), qianYunTongConfig.getSecretKey());
//      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;
//   }
//}