From 7114fc27207ea8f8aca86dd91ff2acfe470c9349 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 23 七月 2021 18:37:39 +0800 Subject: [PATCH] update OSS模块 更新 阿里云 腾讯云 相关代码 重构部分代码结构 --- ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java | 80 ++++++++++++++++++++++++++++++---------- 1 files changed, 60 insertions(+), 20 deletions(-) diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java index 3376b8d..35f008a 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageServiceImpl.java @@ -1,12 +1,16 @@ package com.ruoyi.oss.service.impl; +import cn.hutool.core.util.StrUtil; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.http.HttpProtocol; +import com.qcloud.cos.model.*; import com.qcloud.cos.region.Region; 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.QcloudProperties; @@ -16,6 +20,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.io.ByteArrayInputStream; import java.io.InputStream; /** @@ -41,9 +46,30 @@ ClientConfig clientConfig = new ClientConfig(); // 璁剧疆bucket鎵�鍦ㄧ殑鍖哄煙锛屽崕鍗楋細gz 鍗庡寳锛歵j 鍗庝笢锛歴h clientConfig.setRegion(new Region(this.properties.getRegion())); + if (this.properties.getIsHttps()) { + clientConfig.setHttpProtocol(HttpProtocol.https); + } else { + clientConfig.setHttpProtocol(HttpProtocol.http); + } client = new COSClient(credentials, clientConfig); + createBucket(); } catch (Exception e) { throw new IllegalArgumentException("鑵捐浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�!"); + } + } + + @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澶辫触, 璇锋牳瀵硅吘璁簯閰嶇疆淇℃伅"); } } @@ -54,43 +80,57 @@ @Override public UploadResult upload(byte[] data, String path, String contentType) { - // 鑵捐浜戝繀闇�瑕佷互"/"寮�澶� - if (!path.startsWith("/")) { - path = "/" + path; + 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("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ヨ吘璁簯閰嶇疆淇℃伅"); } - // 涓婁紶鍒拌吘璁簯 -// UploadFileRequest request = new UploadFileRequest(config.getQcloudBucketName(), path, data); -// String response = client.uploadFile(request); -// Map<String, Object> jsonObject = JsonUtils.parseMap(response); -// if (Convert.toInt(jsonObject.get("code")) != 0) { -// throw new OssException("鏂囦欢涓婁紶澶辫触锛�" + Convert.toStr(jsonObject.get("message"))); -// } - return new UploadResult().setUrl(properties.getDomain() + "/" + path).setFilename(path); + return new UploadResult().setUrl(getEndpointLink() + "/" + path).setFilename(path); } @Override public void delete(String path) { -// path = path.replace(config.getDomain(),""); -// DelFileRequest request = new DelFileRequest(config.getBucketName(), path); -// String response = client.delFile(request); -// Map<String, Object> jsonObject = JsonUtils.parseMap(response); -// if (Convert.toInt(jsonObject.get("code")) != 0) { -// throw new OssException("鏂囦欢鍒犻櫎澶辫触锛�" + Convert.toStr(jsonObject.get("message"))); -// } + path = path.replace(getEndpointLink() + "/", ""); + try { + client.deleteObject(new DeleteObjectRequest(properties.getBucketName(), path)); + } catch (Exception e) { + throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鑵捐浜戞煡閰嶇疆淇℃伅"); + } } @Override public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { - return upload(data, getPath(this.properties.getPrefix(), suffix), contentType); + return upload(data, getPath(properties.getPrefix(), suffix), contentType); } @Override public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { - return upload(inputStream, getPath(this.properties.getPrefix(), suffix), contentType); + return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); } @Override public void afterPropertiesSet() throws Exception { OssFactory.register(getServiceType(),this); } + + @Override + public String getEndpointLink() { + String endpoint = properties.getEndpoint(); + StringBuilder sb = new StringBuilder(endpoint); + if (StrUtil.containsAnyIgnoreCase(endpoint, "http://")) { + sb.insert(7, properties.getBucketName() + "."); + } else if (StrUtil.containsAnyIgnoreCase(endpoint, "https://")) { + sb.insert(8, properties.getBucketName() + "."); + } else { + throw new OssException("Endpoint閰嶇疆閿欒"); + } + return sb.toString(); + } } -- Gitblit v1.9.3