fix:优化本地文件适配

This commit is contained in:
besscroft
2023-06-03 16:49:43 +08:00
parent ea6580b95b
commit 512074a351
3 changed files with 24 additions and 6 deletions

View File

@@ -14,4 +14,8 @@ import lombok.EqualsAndHashCode;
@Builder @Builder
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class LocalParam extends FileInitParam { public class LocalParam extends FileInitParam {
/** 代理访问域名 */
private String domain;
} }

View File

@@ -58,6 +58,7 @@ public class ParamUtils {
} else if (Objects.equals(storage.getType(), StorageTypeEnum.LOCAL.getValue())) { } else if (Objects.equals(storage.getType(), StorageTypeEnum.LOCAL.getValue())) {
LocalParam param = LocalParam.builder() LocalParam param = LocalParam.builder()
.build(); .build();
param.setDomain(Optional.ofNullable(configMap.get("domain")).orElse(""));
param.setMountPath(configMap.get("mount_path")); param.setMountPath(configMap.get("mount_path"));
return param; return param;
} else if (Objects.equals(storage.getType(), StorageTypeEnum.AMAZON_S3.getValue())) { } else if (Objects.equals(storage.getType(), StorageTypeEnum.AMAZON_S3.getValue())) {

View File

@@ -10,6 +10,7 @@ import com.besscroft.diyfile.common.constant.FileConstants;
import com.besscroft.diyfile.common.enums.StorageTypeEnum; import com.besscroft.diyfile.common.enums.StorageTypeEnum;
import com.besscroft.diyfile.common.exception.DiyFileException; import com.besscroft.diyfile.common.exception.DiyFileException;
import com.besscroft.diyfile.common.param.storage.init.LocalParam; import com.besscroft.diyfile.common.param.storage.init.LocalParam;
import com.besscroft.diyfile.common.util.PathUtils;
import com.besscroft.diyfile.common.vo.FileInfoVo; import com.besscroft.diyfile.common.vo.FileInfoVo;
import com.besscroft.diyfile.storage.service.base.AbstractFileBaseService; import com.besscroft.diyfile.storage.service.base.AbstractFileBaseService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -91,8 +92,8 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
fileInfoVo.setSize(file.length()); fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath()); fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified())); fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
// TODO 代理链接生成 // 代理链接生成
fileInfoVo.setUrl(file.getAbsolutePath()); fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FILE); fileInfoVo.setType(FileConstants.FILE);
fileInfoVo.setFile(null); fileInfoVo.setFile(null);
} }
@@ -139,24 +140,24 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
List<FileInfoVo> fileInfoVoList = new ArrayList<>(); List<FileInfoVo> fileInfoVoList = new ArrayList<>();
for (File file : fileList) { for (File file : fileList) {
if (file.isDirectory()) { if (file.isDirectory()) {
// TODO 处理文件夹 // 处理文件夹
FileInfoVo fileInfoVo = new FileInfoVo(); FileInfoVo fileInfoVo = new FileInfoVo();
fileInfoVo.setName(file.getName()); fileInfoVo.setName(file.getName());
fileInfoVo.setSize(file.length()); fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath()); fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified())); fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
fileInfoVo.setUrl(file.getAbsolutePath()); fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FOLDER); fileInfoVo.setType(FileConstants.FOLDER);
fileInfoVo.setFile(null); fileInfoVo.setFile(null);
fileInfoVoList.add(fileInfoVo); fileInfoVoList.add(fileInfoVo);
} else { } else {
// TODO 处理文件 // 处理文件
FileInfoVo fileInfoVo = new FileInfoVo(); FileInfoVo fileInfoVo = new FileInfoVo();
fileInfoVo.setName(file.getName()); fileInfoVo.setName(file.getName());
fileInfoVo.setSize(file.length()); fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath()); fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified())); fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
fileInfoVo.setUrl(file.getAbsolutePath()); fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FILE); fileInfoVo.setType(FileConstants.FILE);
fileInfoVo.setFile(null); fileInfoVo.setFile(null);
fileInfoVoList.add(fileInfoVo); fileInfoVoList.add(fileInfoVo);
@@ -165,4 +166,16 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
return fileInfoVoList; return fileInfoVoList;
} }
/**
* 获取文件预览路径
* @param pathAndName 文件路径和名称
* @return 文件预览路径
*/
private String getFileDomainUrl(String pathAndName) {
if (StrUtil.isBlank(initParam.getDomain())) {
return "/@api" + "/" + PathUtils.removeLeadingSlash(pathAndName);
}
return PathUtils.removeTrailingSlash(initParam.getDomain()) + "/" + PathUtils.removeLeadingSlash(pathAndName);
}
} }