疯狂的狮子li
2022-01-13 a0bed51d966ab5d161d3fdd5423ba84f59fb60ff
ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java
@@ -24,90 +24,90 @@
 */
public class AliyunOssStrategy extends AbstractOssStrategy {
   private OSSClient client;
    private OSSClient client;
   @Override
   public void init(OssProperties cloudStorageProperties) {
      properties = cloudStorageProperties;
      try {
         ClientConfiguration configuration = new ClientConfiguration();
         DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider(
            properties.getAccessKey(), properties.getSecretKey());
         client = new OSSClient(properties.getEndpoint(), credentialProvider, configuration);
         createBucket();
      } catch (Exception e) {
         throw new OssException("阿里云存储配置错误! 请检查系统配置:[" + e.getMessage() + "]");
      }
   }
    @Override
    public void init(OssProperties cloudStorageProperties) {
        properties = cloudStorageProperties;
        try {
            ClientConfiguration configuration = new ClientConfiguration();
            DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider(
                properties.getAccessKey(), properties.getSecretKey());
            client = new OSSClient(properties.getEndpoint(), credentialProvider, configuration);
            createBucket();
        } catch (Exception e) {
            throw new OssException("阿里云存储配置错误! 请检查系统配置:[" + e.getMessage() + "]");
        }
    }
   @Override
   public void createBucket() {
      try {
         String bucketName = properties.getBucketName();
         if (client.doesBucketExist(bucketName)) {
            return;
         }
         CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
         createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
         client.createBucket(createBucketRequest);
      } catch (Exception e) {
         throw new OssException("创建Bucket失败, 请核对阿里云配置信息:[" + e.getMessage() + "]");
      }
   }
    @Override
    public void createBucket() {
        try {
            String bucketName = properties.getBucketName();
            if (client.doesBucketExist(bucketName)) {
                return;
            }
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
            createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            client.createBucket(createBucketRequest);
        } catch (Exception e) {
            throw new OssException("创建Bucket失败, 请核对阿里云配置信息:[" + e.getMessage() + "]");
        }
    }
   @Override
   public String getServiceType() {
      return OssEnumd.ALIYUN.getValue();
   }
    @Override
    public String getServiceType() {
        return OssEnumd.ALIYUN.getValue();
    }
   @Override
   public UploadResult upload(byte[] data, String path, String contentType) {
      return upload(new ByteArrayInputStream(data), path, contentType);
   }
    @Override
    public UploadResult upload(byte[] data, String path, String contentType) {
        return upload(new ByteArrayInputStream(data), path, contentType);
    }
   @Override
   public UploadResult upload(InputStream inputStream, String path, String contentType) {
      try {
         ObjectMetadata metadata = new ObjectMetadata();
         metadata.setContentType(contentType);
         client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata));
      } catch (Exception e) {
         throw new OssException("上传文件失败,请检查阿里云配置信息:[" + e.getMessage() + "]");
      }
      return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
   }
    @Override
    public UploadResult upload(InputStream inputStream, String path, String contentType) {
        try {
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentType(contentType);
            client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata));
        } catch (Exception e) {
            throw new OssException("上传文件失败,请检查阿里云配置信息:[" + e.getMessage() + "]");
        }
        return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path);
    }
   @Override
   public void delete(String path) {
      path = path.replace(getEndpointLink() + "/", "");
      try {
         client.deleteObject(properties.getBucketName(), path);
      } catch (Exception e) {
         throw new OssException("上传文件失败,请检查阿里云配置信息:[" + e.getMessage() + "]");
      }
   }
    @Override
    public void delete(String path) {
        path = path.replace(getEndpointLink() + "/" , "");
        try {
            client.deleteObject(properties.getBucketName(), path);
        } catch (Exception e) {
            throw new OssException("上传文件失败,请检查阿里云配置信息:[" + e.getMessage() + "]");
        }
    }
   @Override
   public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
      return upload(data, getPath(properties.getPrefix(), suffix), contentType);
   }
    @Override
    public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) {
        return upload(data, getPath(properties.getPrefix(), suffix), contentType);
    }
   @Override
   public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
      return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
   }
    @Override
    public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) {
        return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType);
    }
   @Override
   public String getEndpointLink() {
      String endpoint = properties.getEndpoint();
      StringBuilder sb = new StringBuilder(endpoint);
      if (StringUtils.containsAnyIgnoreCase(endpoint, "http://")) {
         sb.insert(7, properties.getBucketName() + ".");
      } else if (StringUtils.containsAnyIgnoreCase(endpoint, "https://")) {
         sb.insert(8, properties.getBucketName() + ".");
      } else {
         throw new OssException("Endpoint配置错误");
      }
      return sb.toString();
   }
    @Override
    public String getEndpointLink() {
        String endpoint = properties.getEndpoint();
        StringBuilder sb = new StringBuilder(endpoint);
        if (StringUtils.containsAnyIgnoreCase(endpoint, "http://")) {
            sb.insert(7, properties.getBucketName() + ".");
        } else if (StringUtils.containsAnyIgnoreCase(endpoint, "https://")) {
            sb.insert(8, properties.getBucketName() + ".");
        } else {
            throw new OssException("Endpoint配置错误");
        }
        return sb.toString();
    }
}