mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-20 02:08:15 +08:00
update 更新入参/出参逻辑,对于原始的文件名称无法正确从上传的分片中正确获取,要求客户端进行传递,分片合并成功时回填ossId
This commit is contained in:
parent
0fb0555bc4
commit
614afb3d7f
@ -1,6 +1,7 @@
|
||||
package org.dromara.system.domain.bo;
|
||||
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
@ -26,9 +27,8 @@ public class SysOssPartUploadBo implements Serializable {
|
||||
|
||||
/**
|
||||
* 文件名
|
||||
* TODO 非必填,如果为空则从上传的文件中获取
|
||||
*/
|
||||
// @NotBlank(message = "文件名不能为空")
|
||||
@NotBlank(message = "文件名不能为空")
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
@ -44,6 +44,18 @@ public class SysOssPartUploadBo implements Serializable {
|
||||
@Min(value = 1, message = "分片序号不能小于1")
|
||||
private Integer partNumber;
|
||||
|
||||
/**
|
||||
* 分片大小
|
||||
*/
|
||||
// @NotNull(message = "分片大小不能为空")
|
||||
private Long partSize;
|
||||
|
||||
/**
|
||||
* 分片数量
|
||||
*/
|
||||
// @NotNull(message = "分片数量不能为空")
|
||||
private Long totalParts;
|
||||
|
||||
/**
|
||||
* 是否需要合并
|
||||
*/
|
||||
|
||||
@ -38,4 +38,10 @@ public class SysOssPartUploadVo implements Serializable {
|
||||
*/
|
||||
private Boolean mergeCompleted;
|
||||
|
||||
/**
|
||||
* 分片上传ID - 仅在文件成功合并,数据落库时才会生成
|
||||
* @see this#mergeCompleted 分片文件合并状态
|
||||
*/
|
||||
private Long ossId;
|
||||
|
||||
}
|
||||
|
||||
@ -275,19 +275,13 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
||||
private SysOssPartUploadVo createPartUpload(MultipartFile file, SysOssPartUploadBo bo) throws IOException {
|
||||
// 文件大小
|
||||
Long fileSize = bo.getFileSize();
|
||||
// 获取第一片文件的大小作为分片大小
|
||||
long partSize = file.getSize();
|
||||
// 计算总片数
|
||||
long totalParts = fileSize / partSize;
|
||||
// 当除以分数有余数时每分片总数+1
|
||||
if (fileSize % partSize > 0) {
|
||||
totalParts += 1;
|
||||
}
|
||||
// 获取文件名,如果文件名为空,则使用从上传的文件中获取
|
||||
// 分片大小
|
||||
Long partSize = bo.getPartSize();
|
||||
// 分片数量
|
||||
Long totalParts = bo.getTotalParts();
|
||||
// 文件名
|
||||
String originalFileName = bo.getFileName();
|
||||
if (StringUtils.isBlank(originalFileName)) {
|
||||
originalFileName = file.getOriginalFilename();
|
||||
}
|
||||
// 从文件名中获取文件后缀
|
||||
String suffix = StringUtils.substring(originalFileName, originalFileName.lastIndexOf("."), originalFileName.length());
|
||||
OssClient storage = OssFactory.instance();
|
||||
CreatePartUploadResult partUpload = storage.createPartUploadSuffix(suffix);
|
||||
@ -319,7 +313,14 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
||||
* @return 分片上传对象信息VO
|
||||
*/
|
||||
private SysOssPartUploadVo partUpload(OssClient storage, PartUploadInfo partUploadInfo, MultipartFile file, Integer partNumber) throws IOException {
|
||||
// 文件上传ID
|
||||
String uploadId = partUploadInfo.getUploadId();
|
||||
// 构建分片上传对象信息VO
|
||||
SysOssPartUploadVo sysOssPartUploadVo = new SysOssPartUploadVo();
|
||||
sysOssPartUploadVo.setUploadId(uploadId);
|
||||
sysOssPartUploadVo.setUrl(partUploadInfo.getUrl());
|
||||
sysOssPartUploadVo.setPartInfoList(partUploadInfo.getPartInfoList());
|
||||
sysOssPartUploadVo.setMergeCompleted(partUploadInfo.isNeedMerge());
|
||||
// 上传分片
|
||||
PartUploadResult partUploadResult = storage.partUpload(file.getInputStream(), partUploadInfo.getFileName(), uploadId, partNumber, file.getSize());
|
||||
// 将完成上传的分片信息放入集合中
|
||||
@ -340,13 +341,9 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
|
||||
oss.setFileName(partUploadInfo.getFileName());
|
||||
oss.setUrl(partUploadInfo.getUrl());
|
||||
baseMapper.insert(oss);
|
||||
// 回填对象存储ID
|
||||
sysOssPartUploadVo.setOssId(oss.getOssId());
|
||||
}
|
||||
// 构建分片上传对象信息VO
|
||||
SysOssPartUploadVo sysOssPartUploadVo = new SysOssPartUploadVo();
|
||||
sysOssPartUploadVo.setUploadId(uploadId);
|
||||
sysOssPartUploadVo.setUrl(partUploadInfo.getUrl());
|
||||
sysOssPartUploadVo.setPartInfoList(partUploadInfo.getPartInfoList());
|
||||
sysOssPartUploadVo.setMergeCompleted(partUploadInfo.isNeedMerge());
|
||||
return sysOssPartUploadVo;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user