From b29d0b1f3ec8ac6aa4f06ff3d0a44e4cf67bddac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 24 Dec 2025 15:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E4=BA=91obs;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/obs/FileController.java | 4 +-- .../infrastructure/obs/HuaweiObsService.java | 30 ++++++++++++++----- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/mhd_product/src/main/java/com/linke/product/infrastructure/obs/FileController.java b/mhd_product/src/main/java/com/linke/product/infrastructure/obs/FileController.java index 6612d2a9d..8b0b8b763 100644 --- a/mhd_product/src/main/java/com/linke/product/infrastructure/obs/FileController.java +++ b/mhd_product/src/main/java/com/linke/product/infrastructure/obs/FileController.java @@ -14,9 +14,7 @@ public class FileController { @PostMapping("/upload") public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) { String fileKey = fileStorageService.uploadFile(file); - String fileUrl = fileStorageService.getFileUrl(fileKey); - - return AjaxResult.success(fileUrl); + return AjaxResult.success(fileKey); } @GetMapping("/url") diff --git a/mhd_product/src/main/java/com/linke/product/infrastructure/obs/HuaweiObsService.java b/mhd_product/src/main/java/com/linke/product/infrastructure/obs/HuaweiObsService.java index 1d962671d..6e5ac3710 100644 --- a/mhd_product/src/main/java/com/linke/product/infrastructure/obs/HuaweiObsService.java +++ b/mhd_product/src/main/java/com/linke/product/infrastructure/obs/HuaweiObsService.java @@ -1,7 +1,9 @@ package com.linke.product.infrastructure.obs; import com.mhd.common.core.utils.StringUtils; import com.obs.services.ObsClient; +import com.obs.services.model.HttpMethodEnum; import com.obs.services.model.ObsObject; +import com.obs.services.model.TemporarySignatureRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,6 +24,8 @@ public class HuaweiObsService implements FileStorageService { private String bucketName; + private String folder = "mhd"; + @PostConstruct public void init() { this.bucketName = obsProperties.getBucketName(); @@ -31,8 +35,7 @@ public class HuaweiObsService implements FileStorageService { public String uploadFile(MultipartFile file) { String originalFilename = file.getOriginalFilename(); String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")); - String fileKey = UUID.randomUUID().toString() + fileExtension; - + String fileKey = folder + "/" + UUID.randomUUID().toString() + fileExtension; return uploadFile(fileKey, file); } @@ -52,12 +55,23 @@ public class HuaweiObsService implements FileStorageService { @Override public String getFileUrl(String fileKey) { - if (StringUtils.isNotBlank(obsProperties.getCdnDomain())) { - // 使用CDN域名 - return "https://" + obsProperties.getCdnDomain() + "/" + fileKey; - } else { - // 生成临时访问URL(默认1小时有效期) - return ""; + return generateTemporaryUrl(fileKey,60*60); + } + + /** + * 生成指定有效期的临时URL + */ + public String generateTemporaryUrl(String objectKey, long expireSeconds) { + try { + TemporarySignatureRequest request = new TemporarySignatureRequest( + HttpMethodEnum.GET, + expireSeconds + ); + request.setBucketName(bucketName); + request.setObjectKey(objectKey); + + return obsClient.createTemporarySignature(request).getSignedUrl(); + } finally { } }