优化上传文件。
This commit is contained in:
parent
344666b50b
commit
284dea6a98
|
|
@ -594,13 +594,13 @@ public class CommonService {
|
||||||
|
|
||||||
|
|
||||||
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode) {
|
public ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode) {
|
||||||
Assert.isTrue(FileRepeatEnum.contains(strategy), "解决重名文件参数错误");
|
Assert.isTrue(contains(strategy), "解决重名文件参数错误");
|
||||||
String fileName = file.getOriginalFilename();
|
String fileName = file.getOriginalFilename();
|
||||||
String mainName = FileUtil.mainName(fileName);
|
String mainName = FileUtil.mainName(fileName);
|
||||||
String suffix = FileUtil.getSuffix(fileName);
|
String suffix = FileUtil.getSuffix(fileName);
|
||||||
Assert.isTrue(StrUtil.isNotEmpty(suffix), "文件类型不能为空");
|
Assert.isTrue(StrUtil.isNotEmpty(suffix), "文件类型不能为空");
|
||||||
String destPath = getDbPathById(parentId);
|
String destPath = getDbPathById(parentId);
|
||||||
String strategyStr = FileRepeatEnum.getDesc(strategy);
|
String strategyStr = getDesc(strategy);
|
||||||
Assert.isTrue(!file.isEmpty(), StrFormatter.format("文件 {} 为空,文件上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr));
|
Assert.isTrue(!file.isEmpty(), StrFormatter.format("文件 {} 为空,文件上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr));
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), StrFormatter.format("文件 {} {},上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, NAME_VALID_MSG, destPath, strategyStr));
|
Assert.isTrue(EleCommonUtil.isFileNameValid(file.getOriginalFilename()), StrFormatter.format("文件 {} {},上传到 {} 失败,同名同后缀的处理方式为 {}", fileName, NAME_VALID_MSG, destPath, strategyStr));
|
||||||
// 查找下一层,看是否存在顶级定义相关文件,如果存在,则该层属于管理员层级定义的,不允许上传文件
|
// 查找下一层,看是否存在顶级定义相关文件,如果存在,则该层属于管理员层级定义的,不允许上传文件
|
||||||
|
|
@ -620,7 +620,7 @@ public class CommonService {
|
||||||
Assert.isTrue(dirCount == 0, "文件 {} 上传到 {} 失败,层级结构不允许上传文件,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr);
|
Assert.isTrue(dirCount == 0, "文件 {} 上传到 {} 失败,层级结构不允许上传文件,同名同后缀的处理方式为 {}", fileName, destPath, strategyStr);
|
||||||
EdFileInfo newEdFileInfo = new EdFileInfo();
|
EdFileInfo newEdFileInfo = new EdFileInfo();
|
||||||
newEdFileInfo.newInit();
|
newEdFileInfo.newInit();
|
||||||
EdFileInfo finalEdFileInfo;
|
EdFileInfo finalEdFileInfo = null;
|
||||||
// 首先检查是否是同名文件
|
// 首先检查是否是同名文件
|
||||||
try {
|
try {
|
||||||
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
|
Assert.isTrue(EleCommonUtil.isFileNameValid(fileName), NAME_VALID_MSG);
|
||||||
|
|
@ -640,7 +640,7 @@ public class CommonService {
|
||||||
String fileCode = createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime());
|
String fileCode = createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, newEdFileInfo.getFileTime());
|
||||||
newEdFileInfo.setParentId(parentId)
|
newEdFileInfo.setParentId(parentId)
|
||||||
.setFileCode(fileCode)
|
.setFileCode(fileCode)
|
||||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
.setSaveStatus(EleDataSaveStatusEnum.UPLOADING.code)
|
||||||
.setDataOwn(dataOwnCode)
|
.setDataOwn(dataOwnCode)
|
||||||
.setFileName(mainName)
|
.setFileName(mainName)
|
||||||
.setFileContent(EleCommonUtil.parse(file.getInputStream(), suffix))
|
.setFileContent(EleCommonUtil.parse(file.getInputStream(), suffix))
|
||||||
|
|
@ -656,10 +656,16 @@ public class CommonService {
|
||||||
FileUtil.writeFromStream(file.getInputStream(), fileDestPath);
|
FileUtil.writeFromStream(file.getInputStream(), fileDestPath);
|
||||||
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
||||||
finalEdFileInfo = newEdFileInfo;
|
finalEdFileInfo = newEdFileInfo;
|
||||||
|
newEdFileInfo.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code);
|
||||||
|
edFileInfoMapper.insertOrUpdate(newEdFileInfo);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String info = StrFormatter.format("文件 {} 为上传到 {} 失败,原因 {},同名同后缀的处理方式为 {}", fileName, destPath, e.getMessage(), strategyStr);
|
String info = StrFormatter.format("文件 {} 为上传到 {} 失败,原因 {},同名同后缀的处理方式为 {}", fileName, destPath, e.getMessage(), strategyStr);
|
||||||
newEdFileInfo.setParentId(parentId)
|
if (Objects.isNull(finalEdFileInfo)) {
|
||||||
|
log.error(info, e);
|
||||||
|
throw new BizException(info);
|
||||||
|
}
|
||||||
|
finalEdFileInfo.setParentId(parentId)
|
||||||
.setFileName(mainName)
|
.setFileName(mainName)
|
||||||
.setSaveStatus(EleDataSaveStatusEnum.FAIL.code)
|
.setSaveStatus(EleDataSaveStatusEnum.FAIL.code)
|
||||||
.setFileType(suffix)
|
.setFileType(suffix)
|
||||||
|
|
@ -670,18 +676,18 @@ public class CommonService {
|
||||||
.setDataType(EleDataTypeEnum.FILE.code)
|
.setDataType(EleDataTypeEnum.FILE.code)
|
||||||
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
||||||
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code);
|
.setEffectFlag(EffectFlagEnum.NOT_EFFECTIVE.code);
|
||||||
edFileInfoMapper.insertOrUpdate(newEdFileInfo);
|
edFileInfoMapper.insertOrUpdate(finalEdFileInfo);
|
||||||
log.error(info, e);
|
log.error(info, e);
|
||||||
throw new BizException(info);
|
throw new BizException(info);
|
||||||
}
|
}
|
||||||
UserThreadLocal.setSuccessInfo(Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getParentId).orElse(""),
|
UserThreadLocal.setSuccessInfo(parentId,
|
||||||
Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getId).orElse(""),
|
Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getId).orElse(""),
|
||||||
"文件 {} 为上传到 {} 成功,同名同后缀的处理方式为 {},存入的文件名为 {}",
|
"文件 {} 为上传到 {} 成功,同名同后缀的处理方式为 {},存入的文件名为 {}",
|
||||||
fileName,
|
fileName,
|
||||||
destPath,
|
destPath,
|
||||||
strategyStr,
|
strategyStr,
|
||||||
Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getFileName).orElse(fileName) + "." + Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getFileType).orElse(suffix));
|
fileName + "." + suffix);
|
||||||
return ElectromagneticResultUtil.success(newEdFileInfo.getId());
|
return ElectromagneticResultUtil.success(Optional.ofNullable(finalEdFileInfo).map(EdFileInfo::getId).orElse(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|
@ -699,7 +705,7 @@ public class CommonService {
|
||||||
.setFileSize(file.getSize())
|
.setFileSize(file.getSize())
|
||||||
.setDataType(EleDataTypeEnum.FILE.code)
|
.setDataType(EleDataTypeEnum.FILE.code)
|
||||||
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
.setDataStatus(PublishEnum.PUBLISHED.getCode())
|
||||||
.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code)
|
.setSaveStatus(EleDataSaveStatusEnum.UPLOADING.code)
|
||||||
.setDataOwn(dataOwnCode)
|
.setDataOwn(dataOwnCode)
|
||||||
.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||||
if (strategy == REVERSION.code) {
|
if (strategy == REVERSION.code) {
|
||||||
|
|
@ -752,6 +758,8 @@ public class CommonService {
|
||||||
String fileDestPath = getFileSysPath(newEdFileInfo.getId());
|
String fileDestPath = getFileSysPath(newEdFileInfo.getId());
|
||||||
fileSystemService.save(file.getInputStream(), fileDestPath);
|
fileSystemService.save(file.getInputStream(), fileDestPath);
|
||||||
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
EleCommonUtil.encryptFile(fileDestPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
|
||||||
|
newEdFileInfo.setSaveStatus(EleDataSaveStatusEnum.SUCCESS.code);
|
||||||
|
edFileInfoMapper.insertOrUpdate(newEdFileInfo);
|
||||||
return newEdFileInfo;
|
return newEdFileInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue