update 优化分片上传

This commit is contained in:
AprilWind 2024-04-28 09:46:12 +08:00
parent 08307069b0
commit 80f95d8684

View File

@ -7,6 +7,8 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.core.validate.QueryGroup; import org.dromara.common.core.validate.QueryGroup;
@ -17,7 +19,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.MultipartBo; import org.dromara.system.domain.bo.MultipartBo;
import org.dromara.system.domain.bo.SysOssBo; import org.dromara.system.domain.bo.SysOssBo;
import org.dromara.system.domain.vo.MultipartVo;
import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssUploadVo;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
@ -109,42 +110,37 @@ public class SysOssController extends BaseController {
return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true)); return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true));
} }
/**
* 分片上传
*/
@SaCheckPermission("system:oss:multipart") @SaCheckPermission("system:oss:multipart")
@PostMapping(value = "/multipart") @PostMapping(value = "/multipart")
public R<MultipartVo> multipart(@RequestBody MultipartBo multipartBo) { public R<?> multipart(@RequestBody MultipartBo multipartBo) {
String ossStatus = multipartBo.getOssStatus(); String ossStatus = multipartBo.getOssStatus();
return switch (ossStatus) {
case "initiate" -> {
String originalName = multipartBo.getOriginalName();
return R.ok(ossService.initiateMultipart(multipartBo.getOriginalName(), multipartBo.getMd5Digest())); String md5Digest = multipartBo.getMd5Digest();
} if (StringUtils.isNotEmpty(originalName) && StringUtils.isNotEmpty(md5Digest)) {
yield R.ok(ossService.initiateMultipart(originalName, md5Digest));
/** } else {
* 上传分段 yield R.fail("Original name and MD5 digest cannot be empty");
*/ }
@SaCheckPermission("system:oss:multipart") }
@PostMapping(value = "/multipart/upload") case "upload" -> {
public R<MultipartVo> uploadPart(@Validated(AddGroup.class) @RequestBody MultipartBo multipartBo) { ValidatorUtils.validate(multipartBo, AddGroup.class);
return R.ok(ossService.uploadPart(multipartBo)); yield R.ok(ossService.uploadPart(multipartBo));
} }
case "list" -> {
/** ValidatorUtils.validate(multipartBo, QueryGroup.class);
* 查询上传分段进度 yield R.ok(ossService.uploadPartList(multipartBo));
*/ }
@SaCheckPermission("system:oss:multipart") case "complete" -> {
@PostMapping(value = "/multipart/list") ValidatorUtils.validate(multipartBo, EditGroup.class);
public R<MultipartVo> uploadPartList(@Validated(QueryGroup.class) @RequestBody MultipartBo multipartBo) { yield R.ok(ossService.completeMultipartUpload(multipartBo));
return R.ok(ossService.uploadPartList(multipartBo)); }
} default -> R.fail("Invalid OSS status");
};
/**
* 合并分段文件
*/
@SaCheckPermission("system:oss:multipart")
@Log(title = "OSS对象存储-分片", businessType = BusinessType.INSERT)
@PostMapping(value = "/multipart/complete")
public R<SysOssVo> completeMultipartUpload(@Validated(EditGroup.class) @RequestBody MultipartBo multipartBo) {
return R.ok(ossService.completeMultipartUpload(multipartBo));
} }
} }