From f8ab5663ef7220f8adc0fd8fcbd7d0cf84c6d77d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期一, 02 八月 2021 12:15:14 +0800 Subject: [PATCH] update 日常字符串校验 统一重构到 StringUtils 便于维护扩展 --- ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java | 125 +++++++++++++++++++++++++++++++---------- 1 files changed, 93 insertions(+), 32 deletions(-) diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java index 97a493f..f7b4d4e 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageServiceImpl.java @@ -1,62 +1,102 @@ package com.ruoyi.oss.service.impl; -import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.ArrayUtil; import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; import com.qiniu.storage.Configuration; import com.qiniu.storage.Region; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; -import com.ruoyi.oss.config.CloudStorageConfig; +import com.ruoyi.oss.entity.UploadResult; +import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.exception.OssException; +import com.ruoyi.oss.factory.OssFactory; +import com.ruoyi.oss.properties.CloudStorageProperties; +import com.ruoyi.oss.properties.CloudStorageProperties.QiniuProperties; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageService; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; import java.io.InputStream; /** * 涓冪墰浜戝瓨鍌� + * + * @author Lion Li */ -public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService { +@Lazy +@Service +public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService implements InitializingBean { - private UploadManager uploadManager; - private BucketManager bucketManager; - private String token; + private final UploadManager uploadManager; + private final BucketManager bucketManager; + private final String token; + private final QiniuProperties properties; - public QiniuCloudStorageServiceImpl(CloudStorageConfig config) { - this.config = config; - // 鍒濆鍖� - init(); - } + @Autowired + public QiniuCloudStorageServiceImpl(CloudStorageProperties properties) { + this.properties = properties.getQiniu(); + try { + Configuration config = new Configuration(getRegion(this.properties.getRegion())); + // https璁剧疆 + config.useHttpsDomains = false; + if (this.properties.getIsHttps() != null) { + config.useHttpsDomains = this.properties.getIsHttps(); + } + uploadManager = new UploadManager(config); + Auth auth = Auth.create( + this.properties.getAccessKey(), + this.properties.getSecretKey()); + String bucketName = this.properties.getBucketName(); + token = auth.uploadToken(bucketName); + bucketManager = new BucketManager(auth, config); - private void init() { - // z0 z1 z2 - Configuration config = new Configuration(Region.autoRegion()); - // 榛樿涓嶄娇鐢╤ttps - config.useHttpsDomains = false; - uploadManager = new UploadManager(config); - Auth auth = Auth.create(this.config.getAccessKey(), this.config.getSecretKey()); - token = auth.uploadToken(this.config.getBucketName()); - bucketManager = new BucketManager(auth, config); + if (!ArrayUtil.contains(bucketManager.buckets(), bucketName)) { + bucketManager.createBucket(bucketName, this.properties.getRegion()); + } + } catch (Exception e) { + throw new IllegalArgumentException("涓冪墰浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!"); + } } @Override - public String upload(byte[] data, String path) { + public void createBucket() { try { - Response res = uploadManager.put(data, path, token); + String bucketName = properties.getBucketName(); + if (ArrayUtil.contains(bucketManager.buckets(), bucketName)) { + return; + } + bucketManager.createBucket(bucketName, properties.getRegion()); + } catch (Exception e) { + throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵逛竷鐗涗簯閰嶇疆淇℃伅"); + } + } + + @Override + public String getServiceType() { + return CloudServiceEnumd.QINIU.getValue(); + } + + @Override + public UploadResult upload(byte[] data, String path, String contentType) { + try { + Response res = uploadManager.put(data, path, token, null, contentType, false); if (!res.isOK()) { throw new RuntimeException("涓婁紶涓冪墰鍑洪敊锛�" + res.toString()); } } catch (Exception e) { throw new OssException("涓婁紶鏂囦欢澶辫触锛岃鏍稿涓冪墰閰嶇疆淇℃伅"); } - return config.getDomain() + "/" + path; + return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); } @Override public void delete(String path) { try { - path = path.replace(config.getDomain() + "/", ""); - Response res = bucketManager.delete(config.getBucketName(), path); + path = path.replace(getEndpointLink() + "/", ""); + Response res = bucketManager.delete(properties.getBucketName(), path); if (!res.isOK()) { throw new RuntimeException("鍒犻櫎涓冪墰鏂囦欢鍑洪敊锛�" + res.toString()); } @@ -66,19 +106,40 @@ } @Override - public String upload(InputStream inputStream, String path) { - byte[] data = IoUtil.readBytes(inputStream); - return this.upload(data, path); + public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { + return upload(data, getPath(properties.getPrefix(), suffix), contentType); } @Override - public String uploadSuffix(byte[] data, String suffix) { - return upload(data, getPath(config.getPrefix(), suffix)); + public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { + return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); } @Override - public String uploadSuffix(InputStream inputStream, String suffix) { - return upload(inputStream, getPath(config.getPrefix(), suffix)); + public void afterPropertiesSet() throws Exception { + OssFactory.register(getServiceType(),this); + } + + @Override + public String getEndpointLink() { + return properties.getDomain(); + } + + private Region getRegion(String region) { + switch (region) { + case "z0": + return Region.region0(); + case "z1": + return Region.region1(); + case "z2": + return Region.region2(); + case "na0": + return Region.regionNa0(); + case "as0": + return Region.regionAs0(); + default: + return Region.autoRegion(); + } } } -- Gitblit v1.9.3