mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 02:08:15 +08:00
update 优化初始化分片上传任务
This commit is contained in:
parent
4a931b069b
commit
251622035f
@ -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));
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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<PartUploadResult> 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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user