华为云obs;

This commit is contained in:
王奎兴
2025-12-24 15:41:10 +08:00
parent 55196b1c14
commit b29d0b1f3e
2 changed files with 23 additions and 11 deletions
@@ -14,9 +14,7 @@ public class FileController {
@PostMapping("/upload") @PostMapping("/upload")
public AjaxResult<String> uploadFile(@RequestParam("file") MultipartFile file) { public AjaxResult<String> uploadFile(@RequestParam("file") MultipartFile file) {
String fileKey = fileStorageService.uploadFile(file); String fileKey = fileStorageService.uploadFile(file);
String fileUrl = fileStorageService.getFileUrl(fileKey); return AjaxResult.success(fileKey);
return AjaxResult.success(fileUrl);
} }
@GetMapping("/url") @GetMapping("/url")
@@ -1,7 +1,9 @@
package com.linke.product.infrastructure.obs; package com.linke.product.infrastructure.obs;
import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.utils.StringUtils;
import com.obs.services.ObsClient; import com.obs.services.ObsClient;
import com.obs.services.model.HttpMethodEnum;
import com.obs.services.model.ObsObject; import com.obs.services.model.ObsObject;
import com.obs.services.model.TemporarySignatureRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -22,6 +24,8 @@ public class HuaweiObsService implements FileStorageService {
private String bucketName; private String bucketName;
private String folder = "mhd";
@PostConstruct @PostConstruct
public void init() { public void init() {
this.bucketName = obsProperties.getBucketName(); this.bucketName = obsProperties.getBucketName();
@@ -31,8 +35,7 @@ public class HuaweiObsService implements FileStorageService {
public String uploadFile(MultipartFile file) { public String uploadFile(MultipartFile file) {
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")); String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
String fileKey = UUID.randomUUID().toString() + fileExtension; String fileKey = folder + "/" + UUID.randomUUID().toString() + fileExtension;
return uploadFile(fileKey, file); return uploadFile(fileKey, file);
} }
@@ -52,12 +55,23 @@ public class HuaweiObsService implements FileStorageService {
@Override @Override
public String getFileUrl(String fileKey) { public String getFileUrl(String fileKey) {
if (StringUtils.isNotBlank(obsProperties.getCdnDomain())) { return generateTemporaryUrl(fileKey,60*60);
// 使用CDN域名 }
return "https://" + obsProperties.getCdnDomain() + "/" + fileKey;
} else { /**
// 生成临时访问URL(默认1小时有效期) * 生成指定有效期的临时URL
return ""; */
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 {
} }
} }