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();
|
String ossStatus = multipartBo.getOssStatus();
|
||||||
return switch (ossStatus) {
|
return switch (ossStatus) {
|
||||||
case "initiate" -> {
|
case "initiate" -> {
|
||||||
String originalName = multipartBo.getOriginalName();
|
if (StringUtils.isNotEmpty(multipartBo.getOriginalName()) && StringUtils.isNotEmpty(multipartBo.getMd5Digest())) {
|
||||||
String md5Digest = multipartBo.getMd5Digest();
|
yield R.ok(ossService.initiateMultipart(multipartBo));
|
||||||
if (StringUtils.isNotEmpty(originalName) && StringUtils.isNotEmpty(md5Digest)) {
|
|
||||||
yield R.ok(ossService.initiateMultipart(originalName, md5Digest));
|
|
||||||
} else {
|
} else {
|
||||||
yield R.fail("Original name and MD5 digest cannot be empty");
|
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);
|
ValidatorUtils.validate(multipartBo, AddGroup.class);
|
||||||
yield R.ok(ossService.uploadPart(multipartBo));
|
yield R.ok(ossService.uploadPart(multipartBo));
|
||||||
}
|
}
|
||||||
case "list" -> {
|
case "query" -> {
|
||||||
ValidatorUtils.validate(multipartBo, QueryGroup.class);
|
ValidatorUtils.validate(multipartBo, QueryGroup.class);
|
||||||
yield R.ok(ossService.uploadPartList(multipartBo));
|
yield R.ok(ossService.uploadPartList(multipartBo));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,16 +82,16 @@ public interface ISysOssService {
|
|||||||
/**
|
/**
|
||||||
* 初始化分片上传任务
|
* 初始化分片上传任务
|
||||||
*
|
*
|
||||||
* @param originalName 文件原名
|
* @param multipartBo 初始化分片的参数对象
|
||||||
* @return 分片上传对象信息
|
* @return 分片上传对象信息
|
||||||
*/
|
*/
|
||||||
MultipartVo initiateMultipart(String originalName, String md5Digest);
|
MultipartVo initiateMultipart(MultipartBo multipartBo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传文件的分段(分片上传)
|
* 上传文件的分段(分片上传)
|
||||||
*
|
*
|
||||||
* @param multipartBo SysOssMultipartBo 分段上传的参数对象
|
* @param multipartBo 分段上传的参数对象
|
||||||
* @return SysOssMultipartVo 分片上传成功后的对象信息
|
* @return 分片上传成功后的对象信息
|
||||||
*/
|
*/
|
||||||
MultipartVo uploadPart(MultipartBo multipartBo);
|
MultipartVo uploadPart(MultipartBo multipartBo);
|
||||||
|
|
||||||
|
|||||||
@ -247,20 +247,28 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
|||||||
/**
|
/**
|
||||||
* 初始化分片上传任务
|
* 初始化分片上传任务
|
||||||
*
|
*
|
||||||
* @param originalName 文件原名
|
* @param multipartBo 初始化分片的参数对象
|
||||||
* @return 分片上传对象信息
|
* @return 分片上传对象信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MultipartVo initiateMultipart(String originalName, String md5Digest) {
|
public MultipartVo initiateMultipart(MultipartBo multipartBo) {
|
||||||
String osskey = GlobalConstants.OSS_CONTINUATION + md5Digest;
|
OssClient storage = OssFactory.instance();
|
||||||
|
String osskey = GlobalConstants.OSS_CONTINUATION + multipartBo.getMd5Digest();
|
||||||
MultipartVo multipartVo = new MultipartVo();
|
MultipartVo multipartVo = new MultipartVo();
|
||||||
|
|
||||||
// 检查是否存在缓存,如果存在且超时时间在2小时内,则从缓存中获取上传信息
|
// 检查是否存在缓存,如果存在且超时时间在2小时内,则从缓存中获取上传信息
|
||||||
long timeout = RedisUtils.getTimeToLive(osskey);
|
long timeout = RedisUtils.getTimeToLive(osskey);
|
||||||
if ((timeout < 0 ? timeout : timeout / 1000) > 60 * 60 * 2) {
|
if ((timeout < 0 ? timeout : timeout / 1000) > 60 * 60 * 2) {
|
||||||
multipartVo = RedisUtils.getCacheObject(osskey);
|
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 {
|
} else {
|
||||||
|
String originalName = multipartBo.getOriginalName();
|
||||||
String suffix = StringUtils.substring(originalName, originalName.lastIndexOf("."), originalName.length());
|
String suffix = StringUtils.substring(originalName, originalName.lastIndexOf("."), originalName.length());
|
||||||
OssClient storage = OssFactory.instance();
|
|
||||||
UploadResult uploadResult = storage.initiateMultipart(suffix);
|
UploadResult uploadResult = storage.initiateMultipart(suffix);
|
||||||
multipartVo.setFilename(uploadResult.getFilename());
|
multipartVo.setFilename(uploadResult.getFilename());
|
||||||
multipartVo.setUploadId(uploadResult.getUploadId());
|
multipartVo.setUploadId(uploadResult.getUploadId());
|
||||||
@ -275,8 +283,8 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
|||||||
/**
|
/**
|
||||||
* 上传文件的分段(分片上传)
|
* 上传文件的分段(分片上传)
|
||||||
*
|
*
|
||||||
* @param multipartBo MultipartBo 分段上传的参数对象
|
* @param multipartBo 分段上传的参数对象
|
||||||
* @return MultipartVo 分片上传成功后的对象信息
|
* @return 分片上传成功后的对象信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public MultipartVo uploadPart(MultipartBo multipartBo) {
|
public MultipartVo uploadPart(MultipartBo multipartBo) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user