From 251622035f621872014556f6650a2f59c1b1acd1 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Sun, 28 Apr 2024 12:40:27 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=88=86=E7=89=87=E4=B8=8A=E4=BC=A0=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysOssController.java | 8 +++----- .../system/service/ISysOssService.java | 8 ++++---- .../service/impl/SysOssServiceImpl.java | 20 +++++++++++++------ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java index 30de6d731..f6c87d968 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java @@ -119,10 +119,8 @@ public class SysOssController extends BaseController { String ossStatus = multipartBo.getOssStatus(); return switch (ossStatus) { case "initiate" -> { - String originalName = multipartBo.getOriginalName(); - String md5Digest = multipartBo.getMd5Digest(); - if (StringUtils.isNotEmpty(originalName) && StringUtils.isNotEmpty(md5Digest)) { - yield R.ok(ossService.initiateMultipart(originalName, md5Digest)); + if (StringUtils.isNotEmpty(multipartBo.getOriginalName()) && StringUtils.isNotEmpty(multipartBo.getMd5Digest())) { + yield R.ok(ossService.initiateMultipart(multipartBo)); } else { yield R.fail("Original name and MD5 digest cannot be empty"); } @@ -131,7 +129,7 @@ public class SysOssController extends BaseController { ValidatorUtils.validate(multipartBo, AddGroup.class); yield R.ok(ossService.uploadPart(multipartBo)); } - case "list" -> { + case "query" -> { ValidatorUtils.validate(multipartBo, QueryGroup.class); yield R.ok(ossService.uploadPartList(multipartBo)); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java index 337e426d5..4a0a5e3a0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java @@ -82,16 +82,16 @@ public interface ISysOssService { /** * 初始化分片上传任务 * - * @param originalName 文件原名 + * @param multipartBo 初始化分片的参数对象 * @return 分片上传对象信息 */ - MultipartVo initiateMultipart(String originalName, String md5Digest); + MultipartVo initiateMultipart(MultipartBo multipartBo); /** * 上传文件的分段(分片上传) * - * @param multipartBo SysOssMultipartBo 分段上传的参数对象 - * @return SysOssMultipartVo 分片上传成功后的对象信息 + * @param multipartBo 分段上传的参数对象 + * @return 分片上传成功后的对象信息 */ MultipartVo uploadPart(MultipartBo multipartBo); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index 85f27182d..4e81e6f19 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -247,20 +247,28 @@ public class SysOssServiceImpl implements ISysOssService, OssService { /** * 初始化分片上传任务 * - * @param originalName 文件原名 + * @param multipartBo 初始化分片的参数对象 * @return 分片上传对象信息 */ @Override - public MultipartVo initiateMultipart(String originalName, String md5Digest) { - String osskey = GlobalConstants.OSS_CONTINUATION + md5Digest; + public MultipartVo initiateMultipart(MultipartBo multipartBo) { + OssClient storage = OssFactory.instance(); + String osskey = GlobalConstants.OSS_CONTINUATION + multipartBo.getMd5Digest(); MultipartVo multipartVo = new MultipartVo(); + // 检查是否存在缓存,如果存在且超时时间在2小时内,则从缓存中获取上传信息 long timeout = RedisUtils.getTimeToLive(osskey); if ((timeout < 0 ? timeout : timeout / 1000) > 60 * 60 * 2) { multipartVo = RedisUtils.getCacheObject(osskey); + + // 获取上传分段进度 + List listParts = storage.listParts(multipartVo.getFilename(), multipartVo.getUploadId(), null, null); + multipartVo.setPartUploadList(listParts.stream() + .map(x -> new MultipartVo.PartUploadResult(x.getPartNumber(), x.getETag())) + .collect(Collectors.toList())); } else { + String originalName = multipartBo.getOriginalName(); String suffix = StringUtils.substring(originalName, originalName.lastIndexOf("."), originalName.length()); - OssClient storage = OssFactory.instance(); UploadResult uploadResult = storage.initiateMultipart(suffix); multipartVo.setFilename(uploadResult.getFilename()); multipartVo.setUploadId(uploadResult.getUploadId()); @@ -275,8 +283,8 @@ public class SysOssServiceImpl implements ISysOssService, OssService { /** * 上传文件的分段(分片上传) * - * @param multipartBo MultipartBo 分段上传的参数对象 - * @return MultipartVo 分片上传成功后的对象信息 + * @param multipartBo 分段上传的参数对象 + * @return 分片上传成功后的对象信息 */ @Override public MultipartVo uploadPart(MultipartBo multipartBo) {