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