mirror of https://gitee.com/stylefeng/roses
【8.3.0】【file】更新文件上传增加md5值的计算和保存
parent
f0fb8b7608
commit
dd5957cc75
|
@ -8,6 +8,7 @@ import cn.stylefeng.roses.kernel.file.modular.service.MultipleFileService;
|
||||||
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
|
import cn.stylefeng.roses.kernel.file.modular.service.SysFileInfoService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -28,12 +29,11 @@ public class MultipleFileServiceImpl implements MultipleFileService {
|
||||||
private SysFileInfoService sysFileInfoService;
|
private SysFileInfoService sysFileInfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<SysFileInfoResponse> batchUploadFile(MultipartFile[] fileList, SysFileInfoRequest sysFileInfoRequest) {
|
public List<SysFileInfoResponse> batchUploadFile(MultipartFile[] fileList, SysFileInfoRequest sysFileInfoRequest) {
|
||||||
|
|
||||||
// 1. 创建文件基本信息
|
// 1. 创建文件基本信息
|
||||||
Map<MultipartFile, SysFileInfo> multipartFileSysFileInfoMap = FileInfoFactory.batchCreateFileInfo(fileList, sysFileInfoRequest);
|
Map<MultipartFile, SysFileInfo> multipartFileSysFileInfoMap = FileInfoFactory.batchCreateFileInfo(fileList, sysFileInfoRequest);
|
||||||
Collection<SysFileInfo> sysFileInfos = multipartFileSysFileInfoMap.values();
|
|
||||||
this.sysFileInfoService.saveBatch(sysFileInfos);
|
|
||||||
|
|
||||||
// 2. 进行批量保存文件
|
// 2. 进行批量保存文件
|
||||||
for (Map.Entry<MultipartFile, SysFileInfo> entry : multipartFileSysFileInfoMap.entrySet()) {
|
for (Map.Entry<MultipartFile, SysFileInfo> entry : multipartFileSysFileInfoMap.entrySet()) {
|
||||||
|
@ -42,6 +42,10 @@ public class MultipleFileServiceImpl implements MultipleFileService {
|
||||||
this.sysFileInfoService.storageFile(file, fileInfo);
|
this.sysFileInfoService.storageFile(file, fileInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 2.1 批量保存文件信息
|
||||||
|
Collection<SysFileInfo> sysFileInfos = multipartFileSysFileInfoMap.values();
|
||||||
|
this.sysFileInfoService.saveBatch(sysFileInfos);
|
||||||
|
|
||||||
// 3. 获取文件信息
|
// 3. 获取文件信息
|
||||||
List<SysFileInfoResponse> fileInfoResponses = new ArrayList<>();
|
List<SysFileInfoResponse> fileInfoResponses = new ArrayList<>();
|
||||||
for (SysFileInfo sysFileInfo : sysFileInfos) {
|
for (SysFileInfo sysFileInfo : sysFileInfos) {
|
||||||
|
|
|
@ -31,6 +31,7 @@ import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.io.resource.ResourceUtil;
|
import cn.hutool.core.io.resource.ResourceUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.crypto.digest.MD5;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
||||||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||||
|
@ -142,12 +143,12 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
// 文件请求转换存入数据库的附件信息
|
// 文件请求转换存入数据库的附件信息
|
||||||
SysFileInfo sysFileInfo = FileInfoFactory.createSysFileInfo(file, sysFileInfoRequest);
|
SysFileInfo sysFileInfo = FileInfoFactory.createSysFileInfo(file, sysFileInfoRequest);
|
||||||
|
|
||||||
// 保存文件信息
|
|
||||||
this.save(sysFileInfo);
|
|
||||||
|
|
||||||
// 存储文件到云或者本地
|
// 存储文件到云或者本地
|
||||||
this.storageFile(file, sysFileInfo);
|
this.storageFile(file, sysFileInfo);
|
||||||
|
|
||||||
|
// 保存文件信息
|
||||||
|
this.save(sysFileInfo);
|
||||||
|
|
||||||
// 返回文件信息体
|
// 返回文件信息体
|
||||||
return getFileInfoResponse(sysFileInfo);
|
return getFileInfoResponse(sysFileInfo);
|
||||||
}
|
}
|
||||||
|
@ -611,6 +612,10 @@ public class SysFileInfoServiceImpl extends ServiceImpl<SysFileInfoMapper, SysFi
|
||||||
} else {
|
} else {
|
||||||
fileOperatorApi.storageFile(sysFileInfo.getFileBucket(), sysFileInfo.getFileObjectName(), bytes);
|
fileOperatorApi.storageFile(sysFileInfo.getFileBucket(), sysFileInfo.getFileObjectName(), bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 【2024年9月18日新增】将文件信息,进行md5加密
|
||||||
|
sysFileInfo.setFileMd5(new MD5().digestHex(bytes));
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new FileException(FileExceptionEnum.ERROR_FILE, e.getMessage());
|
throw new FileException(FileExceptionEnum.ERROR_FILE, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue