From 045a561c073bf85422916a53f4531b64d0291b4c Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 20 May 2024 11:30:40 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=85=83=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ServerFileController.java | 28 ++++++++++++++ .../cn/axzo/oss/common/enums/CodeEnum.java | 4 +- .../cn/axzo/oss/common/utils/UrlUtil.java | 38 +++++++++++++++++-- .../oss/http/api/ServerFileServiceApi.java | 8 ++++ .../oss/http/model/GetObjectMetaRequest.java | 30 +++++++++++++++ .../oss/http/model/GetObjectMetaResponse.java | 29 ++++++++++++++ .../oss/integration/s3/AliOssService.java | 6 +++ .../s3/impl/AliOssServiceImpl.java | 15 ++++++++ .../cn/axzo/oss/manager/api/FileManager.java | 6 +++ .../response/ManaGetObjectMetaResponse.java | 35 +++++++++++++++++ .../oss/manager/impl/FileManagerImpl.java | 20 ++++++++++ .../cn/axzo/oss/service/api/FileService.java | 6 +++ .../oss/service/impl/FileServiceImpl.java | 13 ++++++- 13 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java index 174d3e3..23d4e78 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java @@ -2,7 +2,11 @@ package cn.axzo.oss.client.controller; import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.framework.auth.domain.ContextInfo; +import cn.axzo.oss.common.enums.ChannelTypeEnum; +import cn.axzo.oss.common.enums.CodeEnum; +import cn.axzo.oss.common.exception.BizException; import cn.axzo.oss.common.utils.BeanConvertUtil; +import cn.axzo.oss.common.utils.UrlUtil; import cn.axzo.oss.http.api.ServerFileServiceApi; import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest; import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse; @@ -13,6 +17,8 @@ import cn.axzo.oss.http.model.FindFileKeyRequest; import cn.axzo.oss.http.model.FindFileKeyResponse; import cn.axzo.oss.http.model.FindFileUrlRequest; import cn.axzo.oss.http.model.FindFileUrlResponse; +import cn.axzo.oss.http.model.GetObjectMetaRequest; +import cn.axzo.oss.http.model.GetObjectMetaResponse; import cn.axzo.oss.http.model.ServerFileDeleteRequest; import cn.axzo.oss.http.model.ServerFileUploadRequest; import cn.axzo.oss.http.model.ServerFileUploadResponse; @@ -23,10 +29,12 @@ import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; import cn.axzo.oss.manager.api.dto.request.SignUrlDownloadDto; import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto; +import cn.axzo.oss.manager.api.dto.response.ManaGetObjectMetaResponse; import cn.axzo.oss.service.api.FileService; import cn.azxo.framework.common.model.CommonResponse; import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -127,4 +135,24 @@ public class ServerFileController implements ServerFileServiceApi { ContextInfo.LiteSaasContext liteSaasContext = JSONUtil.toBean(contextInfoLiteJsonStr, ContextInfo.LiteSaasContext.class); return CommonResponse.success(BeanConverter.convert(fileService.signUrlUpload(dto, liteSaasContext), ApiSignUrlUploadResponse.class)); } + + /** + * 文件元数据信息 + */ + @Override + public CommonResponse getObjectMeta(@RequestBody GetObjectMetaRequest request) { + if (!StringUtils.hasText(request.getUrl()) && !StringUtils.hasText(request.getBucketName()) && !StringUtils.hasText(request.getKey())) { + throw new BizException(CodeEnum.URL_BUCKET_NAME_KEY_ALL_EMPTY); + } + + + String bucketName = UrlUtil.fetchBucketName(request.getBucketName(), request.getUrl()); + String bucketKey = UrlUtil.fetchBucketKey(request.getKey(), request.getUrl()); + ManaGetObjectMetaResponse response = this.fileService.getObjectMeta(bucketName + , bucketKey + , ChannelTypeEnum.OSS.getChannelCode()); + return CommonResponse.success(BeanConverter.convert(response, GetObjectMetaResponse.class)); + } + + } diff --git a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java index 48d7540..98f9028 100644 --- a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java +++ b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java @@ -60,7 +60,9 @@ public enum CodeEnum implements EnumBase { UPLOAD_SIGN_URL_FAIL(503,"上传临时授权获取SIGNURL失败"), DOWNLOAD_SIGN_URL_FAIL(504,"下载临时授权获取SIGNURL失败"), FILE_APP_IS_EMPTY(505, "app is empty"), - BUCKET_TYPE_IS_EMPTY(506, "bucketType is empty") + BUCKET_TYPE_IS_EMPTY(506, "bucketType is empty"), + GET_OBJECT_META_FAIL(507, "获取元文件失败"), + URL_BUCKET_NAME_KEY_ALL_EMPTY(508, "url-bucketName-key同时为空") ; private final Integer code; diff --git a/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java index 319e9cd..f4a8457 100644 --- a/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java +++ b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java @@ -26,12 +26,42 @@ public class UrlUtil { return str; } + /** + * 通过url或者bucketName,获取桶名称 + */ + public static String fetchBucketName(String bucketName, String url) { + if (org.springframework.util.StringUtils.hasText(bucketName)) { + return bucketName; + } + if (org.springframework.util.StringUtils.hasText(url)) { + if (url.contains(".") && url.contains("//")) { + return url.substring(url.indexOf("//") + 2,url.indexOf(".")); + } + } + return url; + } + /** + * 通过url或者bucketKey,获取桶文件Key + */ + public static String fetchBucketKey(String bucketKey, String url) { + if (org.springframework.util.StringUtils.hasText(bucketKey)) { + return bucketKey; + } + if (org.springframework.util.StringUtils.hasText(url)) { + if (url.contains(".") && url.contains("//")) { + String urlPathNoHttp = url.split("//")[1]; + return urlPathNoHttp.substring(urlPathNoHttp.indexOf("/") + 1); + } + } + return url; + } + public static void main(String[] args) { - String str = "http://axzo-test.oss-cn-chengdu.aliyuncs.com/reportCenter/reportCenter_test"; - String str1 = "https://baidu.com"; - System.out.println(httpToHttps(str)); - System.out.println(httpToHttps(str1)); + String str = "https://axzo-public.oss-cn-chengdu.aliyuncs.com/cms/cms/ecefcd11d1744bd19770ccac2b7724e2.jpg"; + System.out.println(fetchBucketName("", str)); + System.out.println(fetchBucketKey("", str)); + } } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java index 158b3c7..b4d3750 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java @@ -9,6 +9,8 @@ import cn.axzo.oss.http.model.FindFileKeyRequest; import cn.axzo.oss.http.model.FindFileKeyResponse; import cn.axzo.oss.http.model.FindFileUrlRequest; import cn.axzo.oss.http.model.FindFileUrlResponse; +import cn.axzo.oss.http.model.GetObjectMetaRequest; +import cn.axzo.oss.http.model.GetObjectMetaResponse; import cn.axzo.oss.http.model.ServerFileDeleteRequest; import cn.axzo.oss.http.model.ServerFileUploadRequest; import cn.axzo.oss.http.model.ServerFileUploadResponse; @@ -82,4 +84,10 @@ public interface ServerFileServiceApi { @RequestMapping(value = "api/signUrl/fetchUpload", method = RequestMethod.POST) CommonResponse signUrlFetchUpload(ApiSignUrlUploadRequest request); + /** + * 文件元数据信息 + */ + @RequestMapping(value = "api/server/getObjectMeta", method = RequestMethod.POST) + CommonResponse getObjectMeta(GetObjectMetaRequest request); + } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java new file mode 100644 index 0000000..2e67b92 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java @@ -0,0 +1,30 @@ +package cn.axzo.oss.http.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author: xudawei + * @date: 2024-03-12 + * @description: 授权给第三方下载 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class GetObjectMetaRequest { + /** + * 桶名称 + */ + private String bucketName; + /** + * 文件key + */ + private String key; + /** + * 文件url + */ + private String url; +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java new file mode 100644 index 0000000..fbac79b --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java @@ -0,0 +1,29 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +/** + * 元数据 + * + * @author xudawei + * @since 2024-05-20 + */ +@Data +public class GetObjectMetaResponse { + /** + * 桶名称 + */ + private String bucketName; + /** + * 文件key + */ + private String key; + /** + * 文件url + */ + private String url; + /** + * 文件大小 + */ + private long size; +} diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java index bfbbf05..2a0376d 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java @@ -1,6 +1,7 @@ package cn.axzo.oss.integration.s3; import cn.axzo.oss.integration.s3.base.BaseS3Service; +import com.aliyun.oss.model.SimplifiedObjectMeta; /** * @program: oss @@ -29,4 +30,9 @@ public interface AliOssService extends BaseS3Service { * 获取url */ String getUrl(String bucketName, String tgtFileKey); + + /** + * 元数据 + */ + SimplifiedObjectMeta getObjectMeta(String bucketName, String key); } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index c030a3d..f655772 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -19,6 +19,7 @@ import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PartETag; import com.aliyun.oss.model.ResponseHeaderOverrides; +import com.aliyun.oss.model.SimplifiedObjectMeta; import com.aliyun.oss.model.UploadPartRequest; import com.aliyun.oss.model.UploadPartResult; import lombok.extern.slf4j.Slf4j; @@ -359,4 +360,18 @@ public class AliOssServiceImpl implements AliOssService { throw new BizException(CodeEnum.DELETE_FILE_FAIL); } } + + /** + * 元数据 + */ + @Override + public SimplifiedObjectMeta getObjectMeta(String bucketName, String key) { + try { + log.info("aliyun getObjectMeta params, bucketName:{}, key:{}", bucketName, key); + return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); + } catch (Exception e) { + log.error("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); + throw new BizException(CodeEnum.GET_OBJECT_META_FAIL); + } + } } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java index 02c8d16..927f949 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java @@ -2,6 +2,7 @@ package cn.axzo.oss.manager.api; import cn.axzo.oss.manager.api.dto.PartETag; import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto; +import cn.axzo.oss.manager.api.dto.response.ManaGetObjectMetaResponse; import cn.axzo.oss.manager.api.vo.SignUrlUploadVo; import org.springframework.web.multipart.MultipartFile; @@ -75,4 +76,9 @@ public interface FileManager { * 根据华为云/阿里云,授权给第三方下载 */ String fetchDownloadUrl(String bucketName, String key, String channelCode); + + /** + * 元数据 + */ + ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode); } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java new file mode 100644 index 0000000..fa0b9f8 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java @@ -0,0 +1,35 @@ +package cn.axzo.oss.manager.api.dto.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 元数据 + * + * @author xudawei + * @since 2024-05-20 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ManaGetObjectMetaResponse { + /** + * 桶名称 + */ + private String bucketName; + /** + * 文件key + */ + private String key; + /** + * 文件url + */ + private String url; + /** + * 文件大小 + */ + private long size; +} diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java index 7cacd2b..1820bd6 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java @@ -13,7 +13,9 @@ import cn.axzo.oss.integration.s3.HuaWeiCloudService; import cn.axzo.oss.manager.api.FileManager; import cn.axzo.oss.manager.api.dto.PartETag; import cn.axzo.oss.manager.api.dto.request.MultipartUploadDto; +import cn.axzo.oss.manager.api.dto.response.ManaGetObjectMetaResponse; import cn.axzo.oss.manager.api.vo.SignUrlUploadVo; +import com.aliyun.oss.model.SimplifiedObjectMeta; import com.obs.services.model.TemporarySignatureResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -252,4 +254,22 @@ public class FileManagerImpl implements FileManager { } return StringUtils.EMPTY; } + + /** + * 元数据 + */ + @Override + public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode) { + ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(channelCode); + switch (typeEnum) { + case OBS:// 华为云 + return ManaGetObjectMetaResponse.builder().build(); + case OSS:// 阿里云 + SimplifiedObjectMeta simplifiedObjectMeta = aliOssService.getObjectMeta(bucketName, key); + return ManaGetObjectMetaResponse.builder().bucketName(bucketName).key(key).size(simplifiedObjectMeta.getSize()).build(); + default: + BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST); + } + return ManaGetObjectMetaResponse.builder().build(); + } } diff --git a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java index 74a9cac..08fc277 100644 --- a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java +++ b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java @@ -16,6 +16,7 @@ import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto; import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; +import cn.axzo.oss.manager.api.dto.response.ManaGetObjectMetaResponse; import cn.axzo.oss.manager.api.dto.response.MultipartUploadInitResponse; import cn.axzo.oss.manager.api.dto.response.MultipartUploadResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse; @@ -86,4 +87,9 @@ public interface FileService { * @param dto */ void deleteFile(DeleteFileDto dto); + + /** + * 元数据 + */ + ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode); } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index 1b80c6e..5875367 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -45,6 +45,7 @@ import cn.axzo.oss.manager.api.dto.request.SignUrlUploadDto; import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; +import cn.axzo.oss.manager.api.dto.response.ManaGetObjectMetaResponse; import cn.axzo.oss.manager.api.dto.response.MultipartUploadInitResponse; import cn.axzo.oss.manager.api.dto.response.MultipartUploadResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse; @@ -1128,6 +1129,16 @@ public class FileServiceImpl implements FileService { fileManager.deleteFile(file.getBucketName(), tgtFileKey,file.getChannelCode()); fileDao.deleteFile(dto.getFileKey()); } - + /** + * 元数据 + */ + @Override + public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode) { + log.info("getObjectMeta bucketName:{},key:{},channelCode:{}", bucketName, key, channelCode); + Long start = System.currentTimeMillis(); + ManaGetObjectMetaResponse response = fileManager.getObjectMeta(bucketName, key, channelCode); + log.info("getObjectMeta response:{}, times:{}", JsonUtil.obj2Str(response), System.currentTimeMillis() - start); + return response; + } } From 24ff5efcbb1f58cce20ace30e3659e864e8e4f6b Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 20 May 2024 15:03:44 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=87=BA=E5=8F=82=E4=B8=AD=E5=8E=BB?= =?UTF-8?q?=E6=8E=89url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/oss/http/model/GetObjectMetaResponse.java | 4 ---- .../cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java | 2 +- .../manager/api/dto/response/ManaGetObjectMetaResponse.java | 4 ---- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java index fbac79b..f9d018b 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java @@ -18,10 +18,6 @@ public class GetObjectMetaResponse { * 文件key */ private String key; - /** - * 文件url - */ - private String url; /** * 文件大小 */ diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index f655772..e92ac1d 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -371,7 +371,7 @@ public class AliOssServiceImpl implements AliOssService { return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); } catch (Exception e) { log.error("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); - throw new BizException(CodeEnum.GET_OBJECT_META_FAIL); + return new SimplifiedObjectMeta(); } } } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java index fa0b9f8..855a998 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java @@ -24,10 +24,6 @@ public class ManaGetObjectMetaResponse { * 文件key */ private String key; - /** - * 文件url - */ - private String url; /** * 文件大小 */ From f3836bf9c08b1eca1d55a06c4825d6cebd4532b0 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 20 May 2024 16:56:44 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=83=E4=BF=A1?= =?UTF-8?q?=E6=81=AF-=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ServerFileController.java | 26 +++++++++++++++- .../oss/http/api/ServerFileServiceApi.java | 8 +++++ .../http/model/BatchGetObjectMetaRequest.java | 26 ++++++++++++++++ .../model/BatchGetObjectMetaResponse.java | 27 ++++++++++++++++ .../oss/http/model/GetObjectMetaRequest.java | 4 +++ .../oss/http/model/GetObjectMetaResponse.java | 9 ++++++ .../oss/integration/s3/AliOssService.java | 8 ++++- .../s3/impl/AliOssServiceImpl.java | 31 +++++++++++++++++-- .../response/ManaGetObjectMetaResponse.java | 4 +++ .../cn/axzo/oss/service/api/FileService.java | 2 +- .../oss/service/impl/FileServiceImpl.java | 3 +- 11 files changed, 142 insertions(+), 6 deletions(-) create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaRequest.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaResponse.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java index 23d4e78..ea8bdcb 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java @@ -12,6 +12,8 @@ import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest; import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse; import cn.axzo.oss.http.model.ApiSignUrlUploadRequest; import cn.axzo.oss.http.model.ApiSignUrlUploadResponse; +import cn.axzo.oss.http.model.BatchGetObjectMetaRequest; +import cn.axzo.oss.http.model.BatchGetObjectMetaResponse; import cn.axzo.oss.http.model.FileInformationResponse; import cn.axzo.oss.http.model.FindFileKeyRequest; import cn.axzo.oss.http.model.FindFileKeyResponse; @@ -34,13 +36,18 @@ import cn.axzo.oss.service.api.FileService; import cn.azxo.framework.common.model.CommonResponse; import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * 服务端文件 Controller @@ -149,10 +156,27 @@ public class ServerFileController implements ServerFileServiceApi { String bucketName = UrlUtil.fetchBucketName(request.getBucketName(), request.getUrl()); String bucketKey = UrlUtil.fetchBucketKey(request.getKey(), request.getUrl()); ManaGetObjectMetaResponse response = this.fileService.getObjectMeta(bucketName - , bucketKey + , bucketKey, request.getUrl() , ChannelTypeEnum.OSS.getChannelCode()); return CommonResponse.success(BeanConverter.convert(response, GetObjectMetaResponse.class)); } + /** + * 文件元数据信息-批量 + */ + @Override + public CommonResponse batchGetObjectMeta(@RequestBody BatchGetObjectMetaRequest request) { + List list = request.getList(); + if (Objects.isNull(request) || CollectionUtils.isEmpty(list)) { + return CommonResponse.success(BatchGetObjectMetaResponse.builder().build()); + } + List responseList = request.getList().stream().map(item -> { + GetObjectMetaResponse response = getObjectMeta(item).getData(); + response.setId(item.getId()); + return response; + }).collect(Collectors.toList()); + return CommonResponse.success(BatchGetObjectMetaResponse.builder().list(responseList).build()); + } + } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java index b4d3750..59d6a1a 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java @@ -4,6 +4,8 @@ import cn.axzo.oss.http.model.ApiSignUrlDownloadRequest; import cn.axzo.oss.http.model.ApiSignUrlDownloadResponse; import cn.axzo.oss.http.model.ApiSignUrlUploadRequest; import cn.axzo.oss.http.model.ApiSignUrlUploadResponse; +import cn.axzo.oss.http.model.BatchGetObjectMetaRequest; +import cn.axzo.oss.http.model.BatchGetObjectMetaResponse; import cn.axzo.oss.http.model.FileInformationResponse; import cn.axzo.oss.http.model.FindFileKeyRequest; import cn.axzo.oss.http.model.FindFileKeyResponse; @@ -90,4 +92,10 @@ public interface ServerFileServiceApi { @RequestMapping(value = "api/server/getObjectMeta", method = RequestMethod.POST) CommonResponse getObjectMeta(GetObjectMetaRequest request); + /** + * 文件元数据信息 + */ + @RequestMapping(value = "api/server/batchGetObjectMeta", method = RequestMethod.POST) + CommonResponse batchGetObjectMeta(BatchGetObjectMetaRequest request); + } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaRequest.java new file mode 100644 index 0000000..666094b --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaRequest.java @@ -0,0 +1,26 @@ +package cn.axzo.oss.http.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Max; +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @author: xudawei + * @date: 2024-03-12 + * @description: 授权给第三方下载 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BatchGetObjectMetaRequest { + + @Max(value = 1000, message = "max size:1000") + @NotEmpty(message = "list not empty") + private List list; +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaResponse.java new file mode 100644 index 0000000..45d1fb5 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/BatchGetObjectMetaResponse.java @@ -0,0 +1,27 @@ +package cn.axzo.oss.http.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 元数据-批量 + * + * @author xudawei + * @since 2024-05-20 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class BatchGetObjectMetaResponse { + + private List list = new ArrayList<>(); + +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java index 2e67b92..3f5e951 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaRequest.java @@ -27,4 +27,8 @@ public class GetObjectMetaRequest { * 文件url */ private String url; + /** + * 唯一标识 + */ + private String id; } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java index f9d018b..7274ef9 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/GetObjectMetaResponse.java @@ -22,4 +22,13 @@ public class GetObjectMetaResponse { * 文件大小 */ private long size; + + /** + * url + */ + private String url; + /** + * 唯一标识 + */ + private String id; } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java index 2a0376d..bc0aec6 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java @@ -14,7 +14,7 @@ public interface AliOssService extends BaseS3Service { /** * 授权给第三方下载 */ - String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName); + String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName, boolean hasFileName); /** * 授权给第三方-上传 @@ -31,6 +31,12 @@ public interface AliOssService extends BaseS3Service { */ String getUrl(String bucketName, String tgtFileKey); + /** + * 通过url上传至OBS + */ + String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url); + + /** * 元数据 */ diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index e92ac1d..926e3c3 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -289,7 +289,7 @@ public class AliOssServiceImpl implements AliOssService { * 授权给第三方-下载 */ @Override - public String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName) { + public String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName, boolean hasFileName) { Date date = new Date(); date.setTime(date.getTime() + expireSecond * 1000); try { @@ -297,7 +297,9 @@ public class AliOssServiceImpl implements AliOssService { GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.GET); request.setExpiration(date); ResponseHeaderOverrides responseHeaderOverrides = new ResponseHeaderOverrides(); - responseHeaderOverrides.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); + if (hasFileName) { + responseHeaderOverrides.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); + } request.setResponseHeaders(responseHeaderOverrides); URL url = aliOssClient.getClient().generatePresignedUrl(request); log.info("aliyun downloadSignUrl result, bucketName:{}, key:{}, url:{}", bucketName, key, JsonUtil.obj2Str(url)); @@ -361,6 +363,31 @@ public class AliOssServiceImpl implements AliOssService { } } + /** + * 通过url上传至OSS + */ + @Override + public String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url) { + OSS client = aliOssClient.getClient(); + try { + InputStream srcStream = new URL(url).openStream(); + // 创建上传文件的元信息,通过文件云信息设置HTTP Header + ObjectMetadata metadata = new ObjectMetadata(); + // 设置内容被下载时的名称 + metadata.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); + metadata.setContentEncoding("utf-8"); + client.putObject(bucketName, tgtFileKey, srcStream, metadata); + } catch (OSSException e) { + LogUtil.error("uploadByStream OSSException", e); + return ""; + } catch (Exception e) { + LogUtil.error("uploadByStream ClientException", e); + return ""; + } + + return getUrl(bucketName, tgtFileKey); + } + /** * 元数据 */ diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java index 855a998..f164e7b 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/ManaGetObjectMetaResponse.java @@ -28,4 +28,8 @@ public class ManaGetObjectMetaResponse { * 文件大小 */ private long size; + /** + * url + */ + private String url; } diff --git a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java index 08fc277..932fc3c 100644 --- a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java +++ b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java @@ -91,5 +91,5 @@ public interface FileService { /** * 元数据 */ - ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode); + ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode); } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index 5875367..277ad19 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -1133,10 +1133,11 @@ public class FileServiceImpl implements FileService { * 元数据 */ @Override - public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode) { + public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url, String channelCode) { log.info("getObjectMeta bucketName:{},key:{},channelCode:{}", bucketName, key, channelCode); Long start = System.currentTimeMillis(); ManaGetObjectMetaResponse response = fileManager.getObjectMeta(bucketName, key, channelCode); + response.setUrl(url); log.info("getObjectMeta response:{}, times:{}", JsonUtil.obj2Str(response), System.currentTimeMillis() - start); return response; } From c6c63be3dc59fdbaa79a83a904766884a7c2e0d9 Mon Sep 17 00:00:00 2001 From: xudawei Date: Mon, 20 May 2024 18:27:56 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=83=E4=BF=A1?= =?UTF-8?q?=E6=81=AF-=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/oss/common/utils/UrlUtil.java | 8 ++--- .../oss/integration/s3/AliOssService.java | 10 ++----- .../s3/impl/AliOssServiceImpl.java | 30 ++----------------- 3 files changed, 8 insertions(+), 40 deletions(-) diff --git a/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java index f4a8457..7e8870b 100644 --- a/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java +++ b/oss-common/src/main/java/cn/axzo/oss/common/utils/UrlUtil.java @@ -58,10 +58,10 @@ public class UrlUtil { public static void main(String[] args) { - String str = "https://axzo-public.oss-cn-chengdu.aliyuncs.com/cms/cms/ecefcd11d1744bd19770ccac2b7724e2.jpg"; - System.out.println(fetchBucketName("", str)); - System.out.println(fetchBucketKey("", str)); - + String str = "http://axzo-test.oss-cn-chengdu.aliyuncs.com/reportCenter/reportCenter_test"; + String str1 = "https://baidu.com"; + System.out.println(httpToHttps(str)); + System.out.println(httpToHttps(str1)); } } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java index bc0aec6..71e5ed3 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java @@ -14,7 +14,7 @@ public interface AliOssService extends BaseS3Service { /** * 授权给第三方下载 */ - String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName, boolean hasFileName); + String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName); /** * 授权给第三方-上传 @@ -30,15 +30,9 @@ public interface AliOssService extends BaseS3Service { * 获取url */ String getUrl(String bucketName, String tgtFileKey); - - /** - * 通过url上传至OBS - */ - String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url); - - /** * 元数据 */ SimplifiedObjectMeta getObjectMeta(String bucketName, String key); + } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index 926e3c3..bc2cc31 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -289,7 +289,7 @@ public class AliOssServiceImpl implements AliOssService { * 授权给第三方-下载 */ @Override - public String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName, boolean hasFileName) { + public String downloadSignUrl(String bucketName, String key, Long expireSecond, String fileName) { Date date = new Date(); date.setTime(date.getTime() + expireSecond * 1000); try { @@ -297,9 +297,7 @@ public class AliOssServiceImpl implements AliOssService { GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.GET); request.setExpiration(date); ResponseHeaderOverrides responseHeaderOverrides = new ResponseHeaderOverrides(); - if (hasFileName) { - responseHeaderOverrides.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); - } + responseHeaderOverrides.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); request.setResponseHeaders(responseHeaderOverrides); URL url = aliOssClient.getClient().generatePresignedUrl(request); log.info("aliyun downloadSignUrl result, bucketName:{}, key:{}, url:{}", bucketName, key, JsonUtil.obj2Str(url)); @@ -363,30 +361,6 @@ public class AliOssServiceImpl implements AliOssService { } } - /** - * 通过url上传至OSS - */ - @Override - public String uploadByUrl(String bucketName, String tgtFileKey, String fileName, String url) { - OSS client = aliOssClient.getClient(); - try { - InputStream srcStream = new URL(url).openStream(); - // 创建上传文件的元信息,通过文件云信息设置HTTP Header - ObjectMetadata metadata = new ObjectMetadata(); - // 设置内容被下载时的名称 - metadata.setContentDisposition("attachment;filename=\"" + URLEncoder.encode(fileName, "utf-8") + "\""); - metadata.setContentEncoding("utf-8"); - client.putObject(bucketName, tgtFileKey, srcStream, metadata); - } catch (OSSException e) { - LogUtil.error("uploadByStream OSSException", e); - return ""; - } catch (Exception e) { - LogUtil.error("uploadByStream ClientException", e); - return ""; - } - - return getUrl(bucketName, tgtFileKey); - } /** * 元数据 From 9ac02ff9fe03dcbb613bf9d4648a206d3326d434 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 22 May 2024 20:46:23 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=A4=9A=E4=BD=99pom?= =?UTF-8?q?=E7=9A=84jar=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index bc2cc31..699ca3d 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -371,7 +371,7 @@ public class AliOssServiceImpl implements AliOssService { log.info("aliyun getObjectMeta params, bucketName:{}, key:{}", bucketName, key); return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); } catch (Exception e) { - log.error("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); + log.warn("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); return new SimplifiedObjectMeta(); } } From bc8e5d9a038c77109c88a430b5b340044f497747 Mon Sep 17 00:00:00 2001 From: xudawei Date: Wed, 22 May 2024 21:52:42 +0800 Subject: [PATCH 06/10] =?UTF-8?q?endpoint=E5=8A=A0=E4=B8=8Ahangzhou?= =?UTF-8?q?=E7=AB=99=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/oss/integration/s3/AliOssService.java | 2 +- .../axzo/oss/integration/s3/client/AliOssClient.java | 9 +++++++++ .../axzo/oss/integration/s3/config/AliOssConfig.java | 6 ++++++ .../oss/integration/s3/impl/AliOssServiceImpl.java | 11 +++++++++-- .../java/cn/axzo/oss/manager/api/FileManager.java | 2 +- .../cn/axzo/oss/manager/impl/FileManagerImpl.java | 4 ++-- .../cn/axzo/oss/service/impl/FileServiceImpl.java | 2 +- 7 files changed, 29 insertions(+), 7 deletions(-) diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java index 71e5ed3..e557f3d 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/AliOssService.java @@ -33,6 +33,6 @@ public interface AliOssService extends BaseS3Service { /** * 元数据 */ - SimplifiedObjectMeta getObjectMeta(String bucketName, String key); + SimplifiedObjectMeta getObjectMeta(String bucketName, String key, String url); } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java index 11a8686..b91f42e 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java @@ -24,6 +24,7 @@ import org.springframework.stereotype.Component; @Slf4j public class AliOssClient implements OssClientBase { private volatile static OSS instance = null; + private volatile static OSS hangZhouInstance = null; @Autowired private AliOssConfig aliOssConfig; @@ -35,6 +36,13 @@ public class AliOssClient implements OssClientBase { return instance; } + public OSS getHangZhouClient(){ + if (Utility.objIsNull(hangZhouInstance)){ + throw new S3Exception(CodeEnum.S3_CLIENT_NULL.getCode(),"oss-hangzhou客户端未初始化"); + } + return hangZhouInstance; + } + @PostConstruct @Override @@ -42,6 +50,7 @@ public class AliOssClient implements OssClientBase { log.info("initClient endpoint = {}, accessKeyId = {},secretAccessKey = {}", aliOssConfig.getEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); try { instance = new OSSClientBuilder().build(aliOssConfig.getEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); + hangZhouInstance = new OSSClientBuilder().build(aliOssConfig.getHangZhouEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); } catch (Exception e) { instance = null; LogUtil.error("initClient error = {}", e); diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java index aaf103e..d9dadc4 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java @@ -23,6 +23,9 @@ public class AliOssConfig { @Value("${aliyun.oss.endpoint}") private String ENDPOINT; + @Value("${aliyun.oss.hangZhouEndpoint}") + private String HANGZHOU_ENDPOINT; + public String getAccessKeyId(){ return this.ACCESS_KEY_ID; } @@ -34,4 +37,7 @@ public class AliOssConfig { public String getEndpoint(){ return this.ENDPOINT; } + public String getHangZhouEndpoint(){ + return this.HANGZHOU_ENDPOINT; + } } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index 699ca3d..ba0553b 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -366,10 +366,17 @@ public class AliOssServiceImpl implements AliOssService { * 元数据 */ @Override - public SimplifiedObjectMeta getObjectMeta(String bucketName, String key) { + public SimplifiedObjectMeta getObjectMeta(String bucketName, String key, String url) { try { log.info("aliyun getObjectMeta params, bucketName:{}, key:{}", bucketName, key); - return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); + if (StringUtils.isNotBlank(url) && url.startsWith("http") && url.contains("aliyun")) { + if (url.contains("hangzhou")) { + return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); + } else { + return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); + } + } + return new SimplifiedObjectMeta(); } catch (Exception e) { log.warn("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); return new SimplifiedObjectMeta(); diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java index 927f949..390cf1e 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/FileManager.java @@ -80,5 +80,5 @@ public interface FileManager { /** * 元数据 */ - ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode); + ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode); } diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java index 1820bd6..e68527a 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java @@ -259,13 +259,13 @@ public class FileManagerImpl implements FileManager { * 元数据 */ @Override - public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String channelCode) { + public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url,String channelCode) { ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(channelCode); switch (typeEnum) { case OBS:// 华为云 return ManaGetObjectMetaResponse.builder().build(); case OSS:// 阿里云 - SimplifiedObjectMeta simplifiedObjectMeta = aliOssService.getObjectMeta(bucketName, key); + SimplifiedObjectMeta simplifiedObjectMeta = aliOssService.getObjectMeta(bucketName, key, url); return ManaGetObjectMetaResponse.builder().bucketName(bucketName).key(key).size(simplifiedObjectMeta.getSize()).build(); default: BizException.error(CodeEnum.CHANNEL_TYPE_NOT_EXIST); diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index 277ad19..1e958d3 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -1136,7 +1136,7 @@ public class FileServiceImpl implements FileService { public ManaGetObjectMetaResponse getObjectMeta(String bucketName, String key, String url, String channelCode) { log.info("getObjectMeta bucketName:{},key:{},channelCode:{}", bucketName, key, channelCode); Long start = System.currentTimeMillis(); - ManaGetObjectMetaResponse response = fileManager.getObjectMeta(bucketName, key, channelCode); + ManaGetObjectMetaResponse response = fileManager.getObjectMeta(bucketName, key, url, channelCode); response.setUrl(url); log.info("getObjectMeta response:{}, times:{}", JsonUtil.obj2Str(response), System.currentTimeMillis() - start); return response; From 8fbbd6c94efb1ec5e2112f703638a73ae0b3b705 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 May 2024 10:44:59 +0800 Subject: [PATCH 07/10] =?UTF-8?q?endpoint=E5=8A=A0=E4=B8=8Abeijing/shangha?= =?UTF-8?q?i/hangzhou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../integration/s3/base/OssClientBase.java | 6 ++ .../s3/client/AliOssAppProClient.java | 15 +++++ .../integration/s3/client/AliOssClient.java | 64 ++++++++++++++++++- .../s3/client/HuaWeiCloudObsClient.java | 15 +++++ .../s3/config/AliOssBeiJingConfig.java | 37 +++++++++++ .../integration/s3/config/AliOssConfig.java | 8 +-- .../s3/config/AliOssHangZhouConfig.java | 37 +++++++++++ .../s3/config/AliOssShangHaiConfig.java | 37 +++++++++++ .../s3/impl/AliOssServiceImpl.java | 18 ++++-- 9 files changed, 223 insertions(+), 14 deletions(-) create mode 100644 oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssBeiJingConfig.java create mode 100644 oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssHangZhouConfig.java create mode 100644 oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssShangHaiConfig.java diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/base/OssClientBase.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/base/OssClientBase.java index 97b9020..5895449 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/base/OssClientBase.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/base/OssClientBase.java @@ -14,4 +14,10 @@ public interface OssClientBase { String getEndpoint(); + String getHangZhouEndpoint(); + + String getBeiJingEndpoint(); + + String getShangHaiEndpoint(); + } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java index ed9b343..808cda8 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java @@ -54,4 +54,19 @@ public class AliOssAppProClient implements OssClientBase { return APP_PRO_ENDPOINT; } + @Override + public String getHangZhouEndpoint() { + return null; + } + + @Override + public String getBeiJingEndpoint() { + return null; + } + + @Override + public String getShangHaiEndpoint() { + return null; + } + } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java index b91f42e..71c6839 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssClient.java @@ -5,7 +5,10 @@ import cn.axzo.oss.common.enums.CodeEnum; import cn.axzo.oss.common.exception.S3Exception; import cn.axzo.oss.common.utils.Utility; import cn.axzo.oss.integration.s3.base.OssClientBase; +import cn.axzo.oss.integration.s3.config.AliOssBeiJingConfig; import cn.axzo.oss.integration.s3.config.AliOssConfig; +import cn.axzo.oss.integration.s3.config.AliOssHangZhouConfig; +import cn.axzo.oss.integration.s3.config.AliOssShangHaiConfig; import cn.azxo.framework.common.utils.LogUtil; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; @@ -25,9 +28,20 @@ import org.springframework.stereotype.Component; public class AliOssClient implements OssClientBase { private volatile static OSS instance = null; private volatile static OSS hangZhouInstance = null; + private volatile static OSS shangHaiInstance = null; + private volatile static OSS beiJingInstance = null; @Autowired - private AliOssConfig aliOssConfig; + private AliOssConfig aliOssConfig;//成都 + + @Autowired + private AliOssHangZhouConfig aliOssHangZhouConfig;//杭州 + + @Autowired + private AliOssBeiJingConfig aliOssBeiJingConfig;//北京 + + @Autowired + private AliOssShangHaiConfig aliOssShangHaiConfig;//上海 public OSS getClient(){ if (Utility.objIsNull(instance)){ @@ -43,6 +57,20 @@ public class AliOssClient implements OssClientBase { return hangZhouInstance; } + public OSS getBeiJingClient(){ + if (Utility.objIsNull(beiJingInstance)){ + throw new S3Exception(CodeEnum.S3_CLIENT_NULL.getCode(),"oss-beijing客户端未初始化"); + } + return beiJingInstance; + } + + public OSS getShangHaiClient(){ + if (Utility.objIsNull(shangHaiInstance)){ + throw new S3Exception(CodeEnum.S3_CLIENT_NULL.getCode(),"oss-shanghai客户端未初始化"); + } + return shangHaiInstance; + } + @PostConstruct @Override @@ -50,11 +78,28 @@ public class AliOssClient implements OssClientBase { log.info("initClient endpoint = {}, accessKeyId = {},secretAccessKey = {}", aliOssConfig.getEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); try { instance = new OSSClientBuilder().build(aliOssConfig.getEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); - hangZhouInstance = new OSSClientBuilder().build(aliOssConfig.getHangZhouEndpoint(),aliOssConfig.getAccessKeyId(),aliOssConfig.getSecretAccessKey()); } catch (Exception e) { instance = null; LogUtil.error("initClient error = {}", e); } + try { + hangZhouInstance = new OSSClientBuilder().build(aliOssHangZhouConfig.getEndpoint(),aliOssHangZhouConfig.getAccessKeyId(),aliOssHangZhouConfig.getSecretAccessKey()); + } catch (Exception e) { + hangZhouInstance = null; + LogUtil.error("initHangZhouClient error = {}", e); + } + try { + beiJingInstance = new OSSClientBuilder().build(aliOssBeiJingConfig.getEndpoint(),aliOssBeiJingConfig.getAccessKeyId(),aliOssBeiJingConfig.getSecretAccessKey()); + } catch (Exception e) { + beiJingInstance = null; + LogUtil.error("initBeiJingClient error = {}", e); + } + try { + shangHaiInstance = new OSSClientBuilder().build(aliOssShangHaiConfig.getEndpoint(),aliOssShangHaiConfig.getAccessKeyId(),aliOssShangHaiConfig.getSecretAccessKey()); + } catch (Exception e) { + shangHaiInstance = null; + LogUtil.error("initShangHaiClient error = {}", e); + } } @Override @@ -62,4 +107,19 @@ public class AliOssClient implements OssClientBase { return aliOssConfig.getEndpoint(); } + @Override + public String getHangZhouEndpoint(){ + return aliOssHangZhouConfig.getEndpoint(); + } + + @Override + public String getBeiJingEndpoint(){ + return aliOssBeiJingConfig.getEndpoint(); + } + + @Override + public String getShangHaiEndpoint(){ + return aliOssShangHaiConfig.getEndpoint(); + } + } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/HuaWeiCloudObsClient.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/HuaWeiCloudObsClient.java index 39a27b2..160063b 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/HuaWeiCloudObsClient.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/HuaWeiCloudObsClient.java @@ -59,4 +59,19 @@ public class HuaWeiCloudObsClient implements OssClientBase { public String getEndpoint() { return huaWeiCloudObsConfig.getEndPoint(); } + + @Override + public String getHangZhouEndpoint() { + return null; + } + + @Override + public String getBeiJingEndpoint() { + return null; + } + + @Override + public String getShangHaiEndpoint() { + return null; + } } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssBeiJingConfig.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssBeiJingConfig.java new file mode 100644 index 0000000..19fa5c9 --- /dev/null +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssBeiJingConfig.java @@ -0,0 +1,37 @@ +package cn.axzo.oss.integration.s3.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * @program: oss + * @description: 阿里云配置-北京 + * @author: xudawei + * @date: 2024-05-23 + **/ +@RefreshScope +@Component +public class AliOssBeiJingConfig { + + @Value("${aliyun.oss.beijing.accessKeyId}") + private String ACCESS_KEY_ID; + + @Value("${aliyun.oss.beijing.secretAccessKey}") + private String SECRET_ACCESS_KEY; + + @Value("${aliyun.oss.beijing.endpoint}") + private String ENDPOINT; + + public String getAccessKeyId(){ + return this.ACCESS_KEY_ID; + } + + public String getSecretAccessKey(){ + return this.SECRET_ACCESS_KEY; + } + + public String getEndpoint(){ + return this.ENDPOINT; + } +} diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java index d9dadc4..08af7a3 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssConfig.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; /** * @program: oss - * @description: 阿里云配置 + * @description: 阿里云配置-成都 * @author: mr.jie * @date: 2021-07-29 17:57 **/ @@ -23,9 +23,6 @@ public class AliOssConfig { @Value("${aliyun.oss.endpoint}") private String ENDPOINT; - @Value("${aliyun.oss.hangZhouEndpoint}") - private String HANGZHOU_ENDPOINT; - public String getAccessKeyId(){ return this.ACCESS_KEY_ID; } @@ -37,7 +34,4 @@ public class AliOssConfig { public String getEndpoint(){ return this.ENDPOINT; } - public String getHangZhouEndpoint(){ - return this.HANGZHOU_ENDPOINT; - } } diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssHangZhouConfig.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssHangZhouConfig.java new file mode 100644 index 0000000..09ce8c7 --- /dev/null +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssHangZhouConfig.java @@ -0,0 +1,37 @@ +package cn.axzo.oss.integration.s3.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * @program: oss + * @description: 阿里云配置-杭州 + * @author: xudawei + * @date: 2024-05-23 + **/ +@RefreshScope +@Component +public class AliOssHangZhouConfig { + + @Value("${aliyun.oss.hangzhou.accessKeyId}") + private String ACCESS_KEY_ID; + + @Value("${aliyun.oss.hangzhou.secretAccessKey}") + private String SECRET_ACCESS_KEY; + + @Value("${aliyun.oss.hangzhou.endpoint}") + private String ENDPOINT; + + public String getAccessKeyId(){ + return this.ACCESS_KEY_ID; + } + + public String getSecretAccessKey(){ + return this.SECRET_ACCESS_KEY; + } + + public String getEndpoint(){ + return this.ENDPOINT; + } +} diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssShangHaiConfig.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssShangHaiConfig.java new file mode 100644 index 0000000..bb51ce7 --- /dev/null +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/config/AliOssShangHaiConfig.java @@ -0,0 +1,37 @@ +package cn.axzo.oss.integration.s3.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.stereotype.Component; + +/** + * @program: oss + * @description: 阿里云配置-上海 + * @author: xudawei + * @date: 2024-05-23 + **/ +@RefreshScope +@Component +public class AliOssShangHaiConfig { + + @Value("${aliyun.oss.shanghai.accessKeyId}") + private String ACCESS_KEY_ID; + + @Value("${aliyun.oss.shanghai.secretAccessKey}") + private String SECRET_ACCESS_KEY; + + @Value("${aliyun.oss.shanghai.endpoint}") + private String ENDPOINT; + + public String getAccessKeyId(){ + return this.ACCESS_KEY_ID; + } + + public String getSecretAccessKey(){ + return this.SECRET_ACCESS_KEY; + } + + public String getEndpoint(){ + return this.ENDPOINT; + } +} diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index ba0553b..0a44b8c 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -303,7 +303,7 @@ public class AliOssServiceImpl implements AliOssService { log.info("aliyun downloadSignUrl result, bucketName:{}, key:{}, url:{}", bucketName, key, JsonUtil.obj2Str(url)); return url.toString(); } catch (Exception e) { - log.error("aliyun downloadSignUrl result, bucketName:{}, key:{}", bucketName, key); + log.warn("aliyun downloadSignUrl result, bucketName:{}, key:{}", bucketName, key); throw new BizException(CodeEnum.DOWNLOAD_SIGN_URL_FAIL); } } @@ -342,7 +342,7 @@ public class AliOssServiceImpl implements AliOssService { log.info("aliyun uploadSignUrl result, bucketName:{}, key:{}, url:{}", bucketName, key, JsonUtil.obj2Str(url)); return url.toString(); } catch (Exception e) { - log.info("aliyun uploadSignUrl exception, bucketName:{}, key:{}", bucketName, key, e); + log.warn("aliyun uploadSignUrl exception, bucketName:{}, key:{}", bucketName, key, e); throw new BizException(UPLOAD_SIGN_URL_FAIL); } } @@ -368,14 +368,22 @@ public class AliOssServiceImpl implements AliOssService { @Override public SimplifiedObjectMeta getObjectMeta(String bucketName, String key, String url) { try { - log.info("aliyun getObjectMeta params, bucketName:{}, key:{}", bucketName, key); if (StringUtils.isNotBlank(url) && url.startsWith("http") && url.contains("aliyun")) { - if (url.contains("hangzhou")) { + if (url.contains(aliOssClient.getHangZhouEndpoint())) {//杭州 + log.info("aliyun-hangzhou-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); - } else { + } else if (url.contains(aliOssClient.getBeiJingEndpoint())) {//北京 + log.info("aliyun-beijing-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getBeiJingClient().getSimplifiedObjectMeta(bucketName, key); + } else if (url.contains(aliOssClient.getShangHaiEndpoint())) {//上海 + log.info("aliyun-shanghai-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getShangHaiClient().getSimplifiedObjectMeta(bucketName, key); + } else if (url.contains(aliOssClient.getEndpoint())) {//成都 + log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); } } + log.info("aliyun-none-endpoint getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); return new SimplifiedObjectMeta(); } catch (Exception e) { log.warn("aliyun getObjectMeta exception, bucketName:{}, key:{}", bucketName, key, e); From 048511c6f8272dd9f5efc9ffec56636209e67201 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 May 2024 11:17:54 +0800 Subject: [PATCH 08/10] =?UTF-8?q?endpoint=E5=8A=A0=E4=B8=8Abeijing/shangha?= =?UTF-8?q?i/hangzhou-=E8=BF=98=E5=8E=9F=E7=8E=B0=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../s3/impl/AliOssServiceImpl.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index 0a44b8c..77d7c1b 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -369,19 +369,21 @@ public class AliOssServiceImpl implements AliOssService { public SimplifiedObjectMeta getObjectMeta(String bucketName, String key, String url) { try { if (StringUtils.isNotBlank(url) && url.startsWith("http") && url.contains("aliyun")) { - if (url.contains(aliOssClient.getHangZhouEndpoint())) {//杭州 - log.info("aliyun-hangzhou-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); - return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); - } else if (url.contains(aliOssClient.getBeiJingEndpoint())) {//北京 - log.info("aliyun-beijing-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); - return aliOssClient.getBeiJingClient().getSimplifiedObjectMeta(bucketName, key); - } else if (url.contains(aliOssClient.getShangHaiEndpoint())) {//上海 - log.info("aliyun-shanghai-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); - return aliOssClient.getShangHaiClient().getSimplifiedObjectMeta(bucketName, key); - } else if (url.contains(aliOssClient.getEndpoint())) {//成都 - log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); - return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); - } + log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); +// if (url.contains(aliOssClient.getHangZhouEndpoint())) {//杭州 +// log.info("aliyun-hangzhou-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); +// return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); +// } else if (url.contains(aliOssClient.getBeiJingEndpoint())) {//北京 +// log.info("aliyun-beijing-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); +// return aliOssClient.getBeiJingClient().getSimplifiedObjectMeta(bucketName, key); +// } else if (url.contains(aliOssClient.getShangHaiEndpoint())) {//上海 +// log.info("aliyun-shanghai-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); +// return aliOssClient.getShangHaiClient().getSimplifiedObjectMeta(bucketName, key); +// } else if (url.contains(aliOssClient.getEndpoint())) {//成都 +// log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); +// return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); +// } } log.info("aliyun-none-endpoint getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); return new SimplifiedObjectMeta(); From 03c7668e7652b40b406a2321ea08ad06a098da08 Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 May 2024 11:46:13 +0800 Subject: [PATCH 09/10] =?UTF-8?q?endpoint=E5=8A=A0=E4=B8=8Abeijing/shangha?= =?UTF-8?q?i/hangzhou-=E5=88=A4=E6=96=AD=E6=96=87=E4=BB=B6=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../s3/impl/AliOssServiceImpl.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java index 77d7c1b..0a44b8c 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/impl/AliOssServiceImpl.java @@ -369,21 +369,19 @@ public class AliOssServiceImpl implements AliOssService { public SimplifiedObjectMeta getObjectMeta(String bucketName, String key, String url) { try { if (StringUtils.isNotBlank(url) && url.startsWith("http") && url.contains("aliyun")) { - log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); - return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); -// if (url.contains(aliOssClient.getHangZhouEndpoint())) {//杭州 -// log.info("aliyun-hangzhou-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); -// return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); -// } else if (url.contains(aliOssClient.getBeiJingEndpoint())) {//北京 -// log.info("aliyun-beijing-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); -// return aliOssClient.getBeiJingClient().getSimplifiedObjectMeta(bucketName, key); -// } else if (url.contains(aliOssClient.getShangHaiEndpoint())) {//上海 -// log.info("aliyun-shanghai-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); -// return aliOssClient.getShangHaiClient().getSimplifiedObjectMeta(bucketName, key); -// } else if (url.contains(aliOssClient.getEndpoint())) {//成都 -// log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); -// return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); -// } + if (url.contains(aliOssClient.getHangZhouEndpoint())) {//杭州 + log.info("aliyun-hangzhou-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getHangZhouClient().getSimplifiedObjectMeta(bucketName, key); + } else if (url.contains(aliOssClient.getBeiJingEndpoint())) {//北京 + log.info("aliyun-beijing-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getBeiJingClient().getSimplifiedObjectMeta(bucketName, key); + } else if (url.contains(aliOssClient.getShangHaiEndpoint())) {//上海 + log.info("aliyun-shanghai-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getShangHaiClient().getSimplifiedObjectMeta(bucketName, key); + } else if (url.contains(aliOssClient.getEndpoint())) {//成都 + log.info("aliyun-chengdu-getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); + return aliOssClient.getClient().getSimplifiedObjectMeta(bucketName, key); + } } log.info("aliyun-none-endpoint getObjectMeta params, bucketName:{}, key:{},url:{}", bucketName, key, url); return new SimplifiedObjectMeta(); From f95ca0165af2c87224605bd4f0d6054f9255956d Mon Sep 17 00:00:00 2001 From: xudawei Date: Thu, 23 May 2024 15:24:12 +0800 Subject: [PATCH 10/10] =?UTF-8?q?endpoint=E5=8A=A0=E4=B8=8Abeijing/shangha?= =?UTF-8?q?i/hangzhou-AliOssAppProClient=E5=8A=A0=E4=B8=8Aendpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../s3/client/AliOssAppProClient.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java index 808cda8..7aded9c 100644 --- a/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java +++ b/oss-integration/src/main/java/cn/axzo/oss/integration/s3/client/AliOssAppProClient.java @@ -5,10 +5,14 @@ import cn.axzo.oss.common.enums.CodeEnum; import cn.axzo.oss.common.exception.S3Exception; import cn.axzo.oss.common.utils.Utility; import cn.axzo.oss.integration.s3.base.OssClientBase; +import cn.axzo.oss.integration.s3.config.AliOssBeiJingConfig; +import cn.axzo.oss.integration.s3.config.AliOssHangZhouConfig; +import cn.axzo.oss.integration.s3.config.AliOssShangHaiConfig; import cn.azxo.framework.common.utils.LogUtil; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -29,6 +33,15 @@ public class AliOssAppProClient implements OssClientBase { private volatile static OSS instance = null; + @Autowired + private AliOssHangZhouConfig aliOssHangZhouConfig;//杭州 + + @Autowired + private AliOssBeiJingConfig aliOssBeiJingConfig;//北京 + + @Autowired + private AliOssShangHaiConfig aliOssShangHaiConfig;//上海 + public OSS getClient() { if (Utility.objIsNull(instance)) { throw new S3Exception(CodeEnum.S3_CLIENT_NULL.getCode(), "oss客户端未初始化"); @@ -56,17 +69,17 @@ public class AliOssAppProClient implements OssClientBase { @Override public String getHangZhouEndpoint() { - return null; + return aliOssHangZhouConfig.getEndpoint(); } @Override public String getBeiJingEndpoint() { - return null; + return aliOssBeiJingConfig.getEndpoint(); } @Override public String getShangHaiEndpoint() { - return null; + return aliOssShangHaiConfig.getEndpoint(); } }