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
@EqualsAndHashCode(callSuper = true)
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())) {
LocalParam param = LocalParam.builder()
.build();
param.setDomain(Optional.ofNullable(configMap.get("domain")).orElse(""));
param.setMountPath(configMap.get("mount_path"));
return param;
} 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.exception.DiyFileException;
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.storage.service.base.AbstractFileBaseService;
import lombok.RequiredArgsConstructor;
@@ -91,8 +92,8 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
// TODO 代理链接生成
fileInfoVo.setUrl(file.getAbsolutePath());
// 代理链接生成
fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FILE);
fileInfoVo.setFile(null);
}
@@ -139,24 +140,24 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
List<FileInfoVo> fileInfoVoList = new ArrayList<>();
for (File file : fileList) {
if (file.isDirectory()) {
// TODO 处理文件夹
// 处理文件夹
FileInfoVo fileInfoVo = new FileInfoVo();
fileInfoVo.setName(file.getName());
fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
fileInfoVo.setUrl(file.getAbsolutePath());
fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FOLDER);
fileInfoVo.setFile(null);
fileInfoVoList.add(fileInfoVo);
} else {
// TODO 处理文件
// 处理文件
FileInfoVo fileInfoVo = new FileInfoVo();
fileInfoVo.setName(file.getName());
fileInfoVo.setSize(file.length());
fileInfoVo.setPath(file.getPath());
fileInfoVo.setLastModifiedDateTime(LocalDateTimeUtil.of(file.lastModified()));
fileInfoVo.setUrl(file.getAbsolutePath());
fileInfoVo.setUrl(getFileDomainUrl(file.getPath()));
fileInfoVo.setType(FileConstants.FILE);
fileInfoVo.setFile(null);
fileInfoVoList.add(fileInfoVo);
@@ -165,4 +166,16 @@ public class LocalServiceImpl extends AbstractFileBaseService<LocalParam> {
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);
}
}