From bd8994f0debca298b16568ed6be858fa7d45a8e9 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Mon, 15 Apr 2024 12:37:47 +0800 Subject: [PATCH] =?UTF-8?q?update=20oss=E5=B7=A5=E5=85=B7=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/oss/core/OssClient.java | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index d30b21d9e..ccd09b04d 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -1,5 +1,6 @@ package org.dromara.common.oss.core; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.IdUtil; import org.dromara.common.core.constant.Constants; @@ -326,12 +327,17 @@ public class OssClient { * @return 包含上传 ID 的 UploadResult 对象 */ public UploadResult initiateMultipartUpload(String key) { - String uploadId = client.createMultipartUpload( - x -> x.bucket(properties.getBucketName()) - .key(key) - .build() - ).join().uploadId(); - return UploadResult.builder().url(getUrl() + StringUtils.SLASH + key).filename(key).uploadId(uploadId).build(); + try { + String uploadId = client.createMultipartUpload( + x -> x.bucket(properties.getBucketName()) + .key(key) + .build() + ).join().uploadId(); + return UploadResult.builder().url(getUrl() + StringUtils.SLASH + key).filename(key).uploadId(uploadId).build(); + } catch (Exception e) { + // 捕获异常并抛出自定义异常 + throw new OssException("创建分片上传任务失败,请检查配置信息:[" + e.getMessage() + "]"); + } } /** @@ -367,19 +373,24 @@ public class OssClient { * @return 包含分片上传结果信息的 PartUploadResult 对象列表 */ public List listParts(String key, String uploadId, Integer maxParts, Integer partNumberMarker) { - List parts = client.listParts( - x -> x.bucket(properties.getBucketName()) - .key(key) - .uploadId(uploadId) - .maxParts(maxParts != null ? maxParts : 1000) - .partNumberMarker(partNumberMarker != null ? partNumberMarker : 0) - .build()).join().parts(); - return parts.stream() - .map(x -> PartUploadResult.builder() - .partNumber(x.partNumber()) - .eTag(x.eTag()) - .build()) - .collect(Collectors.toList()); + try { + List parts = client.listParts( + x -> x.bucket(properties.getBucketName()) + .key(key) + .uploadId(uploadId) + .maxParts(maxParts != null ? maxParts : 1000) + .partNumberMarker(partNumberMarker != null ? partNumberMarker : 0) + .build()).join().parts(); + return parts.stream() + .map(x -> PartUploadResult.builder() + .partNumber(x.partNumber()) + .eTag(x.eTag()) + .build()) + .collect(Collectors.toList()); + } catch (Exception e) { + // 捕获异常并抛出自定义异常 + throw new OssException("获取分片列表失败,请检查配置信息:[" + e.getMessage() + "]"); + } } /** @@ -391,6 +402,9 @@ public class OssClient { * @return 包含上传结果信息的 UploadResult 对象 */ public UploadResult completeMultipartUpload(String key, String uploadId, List partUploadResults) { + if (CollUtil.isEmpty(partUploadResults)) { + throw new OssException("分片列表不能为空"); + } List completedParts = partUploadResults.stream() .map(x -> CompletedPart.builder() .partNumber(x.getPartNumber())