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
f76893ff9b
commit
38be1c9ac2
@ -51,9 +51,11 @@ public class MultipartBo implements Serializable {
|
||||
private Integer partNumber;
|
||||
|
||||
/**
|
||||
* 内容的 MD5 摘要(初始化的时候,需要第一片的md5值用来判断断点续传)
|
||||
*
|
||||
* 内容的 MD5 摘要
|
||||
* (initiate初始化、合并complete的时候,需要第一片的md5值用来判断断点续传)
|
||||
* upload状态时,非必需(如果有值会校验)
|
||||
*/
|
||||
@NotBlank(message = "第一片的md5值不能为空", groups = EditGroup.class)
|
||||
@Size(max = 255, message = "内容的 MD5 摘要,如果有的话不能超过255", groups = AddGroup.class)
|
||||
private String md5Digest;
|
||||
|
||||
@ -62,12 +64,14 @@ public class MultipartBo implements Serializable {
|
||||
* 最多分片一万,一次性返回会造成前端性能问题,需要前端多次校验
|
||||
*/
|
||||
@NotNull(message = "最大返回的分片数不能为空", groups = QueryGroup.class)
|
||||
@Range(max = 1000, message = "最大返回的分片数不能超过1000", groups = EditGroup.class)
|
||||
private Integer maxParts;
|
||||
|
||||
/**
|
||||
* 分片编号的标记,用于分页查询(默认为0,表示从第一个分片开始查询)
|
||||
*/
|
||||
@NotNull(message = "分片编号的标记不能为空", groups = QueryGroup.class)
|
||||
@Range(min = 0, max = 10000, message = "分片编号的标记长度必须在0到10000之间", groups = EditGroup.class)
|
||||
private Integer partNumberMarker;
|
||||
|
||||
/**
|
||||
|
||||
@ -25,6 +25,7 @@ import org.dromara.common.oss.entity.UploadResult;
|
||||
import org.dromara.common.oss.enumd.AccessPolicyType;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.system.domain.SysOss;
|
||||
import org.dromara.system.domain.bo.MultipartBo;
|
||||
import org.dromara.system.domain.bo.SysOssBo;
|
||||
@ -253,7 +254,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
||||
@Override
|
||||
public MultipartVo initiateMultipart(MultipartBo multipartBo) {
|
||||
OssClient storage = OssFactory.instance();
|
||||
String osskey = GlobalConstants.OSS_CONTINUATION + multipartBo.getMd5Digest();
|
||||
String osskey = GlobalConstants.OSS_CONTINUATION + LoginHelper.getUserId() + multipartBo.getMd5Digest();
|
||||
MultipartVo multipartVo = new MultipartVo();
|
||||
|
||||
// 检查是否存在缓存,如果存在且超时时间在2小时内,则从缓存中获取上传信息
|
||||
@ -346,6 +347,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
||||
// 保存文件信息
|
||||
SysOssVo sysOssVo = buildResultEntity(multipartVo.getOriginalName(), multipartVo.getSuffix(), storage.getConfigKey(), uploadResult);
|
||||
RedisUtils.deleteObject(uploadIdKey);
|
||||
RedisUtils.deleteObject(GlobalConstants.OSS_CONTINUATION + LoginHelper.getUserId() + multipartBo.getMd5Digest());
|
||||
return sysOssVo;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user