Skip to content

Commit 9a63473

Browse files
author
pedro
committed
fix:修复文件上传的视图不一致问题
1 parent 6e0bf6e commit 9a63473

4 files changed

Lines changed: 39 additions & 31 deletions

File tree

src/main/java/io/github/talelin/merak/bo/FileBO.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,23 @@
55
@Data
66
public class FileBO {
77

8+
/**
9+
* 文件 id
10+
*/
811
private Long id;
912

10-
private String path;
11-
1213
/**
13-
* LOCAL(本地) 或 REMOTE(远程)
14+
* 文件 key,上传时指定的
1415
*/
15-
private String type;
16-
17-
private String name;
16+
private String key;
1817

19-
private String extension;
18+
/**
19+
* 文件路径
20+
*/
21+
private String path;
2022

21-
private Integer size;
23+
/**
24+
* 文件 URL
25+
*/
26+
private String url;
2227
}

src/main/java/io/github/talelin/merak/extensions/file/AbstractUploader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ private void handleOneFile0(List<File> res, long singleFileLimit, MultipartFile
5151
File fileData = File.builder().
5252
name(newFilename).
5353
md5(md5).
54+
key(file.getName()).
5455
path(storePath).
5556
size(bytes.length).
5657
type(getFileType()).

src/main/java/io/github/talelin/merak/extensions/file/config.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ lin.cms.file.domain=http://localhost:5000/
1414
# \u672C\u5730\u6587\u4EF6\u4FDD\u5B58\u4F4D\u7F6E
1515
lin.cms.file.store-dir=assets/
1616
# \u5B9E\u73B0
17-
lin.cms.file.uploader=local
17+
lin.cms.file.uploader=local

src/main/java/io/github/talelin/merak/service/impl/FileServiceImpl.java

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import cn.hutool.core.bean.BeanUtil;
44
import cn.hutool.core.io.FileUtil;
55
import io.github.talelin.merak.bo.FileBO;
6-
import io.github.talelin.merak.extensions.file.File;
76
import io.github.talelin.merak.extensions.file.FileConstant;
87
import io.github.talelin.merak.extensions.file.Uploader;
98
import io.github.talelin.merak.mapper.FileMapper;
@@ -18,7 +17,6 @@
1817

1918
import java.util.ArrayList;
2019
import java.util.List;
21-
import java.util.stream.Collectors;
2220

2321
/**
2422
* @author pedro
@@ -44,35 +42,39 @@ public class FileServiceImpl extends ServiceImpl<FileMapper, FileDO> implements
4442
*/
4543
@Override
4644
public List<FileBO> upload(MultiValueMap<String, MultipartFile> fileMap) {
47-
List<FileDO> tmp = new ArrayList<>();
48-
List<File> files = uploader.upload(fileMap, file -> {
45+
List<FileBO> res = new ArrayList<>();
46+
uploader.upload(fileMap, file -> {
4947
FileDO found = this.baseMapper.selectByMd5(file.getMd5());
50-
if (found == null)
48+
// 数据库中不存在
49+
if (found == null) {
50+
FileDO fileDO = new FileDO();
51+
BeanUtil.copyProperties(file, fileDO);
52+
this.getBaseMapper().insert(fileDO);
53+
res.add(transformDoToBo(fileDO, file.getKey()));
5154
return true;
52-
tmp.add(found);
55+
}
56+
// 已存在,则直接转化返回
57+
res.add(transformDoToBo(found, file.getKey()));
5358
return false;
5459
});
55-
tmp.addAll(files.stream().map(file -> {
56-
FileDO fileDO = new FileDO();
57-
BeanUtil.copyProperties(file, fileDO);
58-
this.getBaseMapper().insert(fileDO);
59-
return fileDO;
60-
}).collect(Collectors.toList()));
61-
62-
List<FileBO> res = tmp.stream().map(file -> {
63-
FileBO bo = new FileBO();
64-
BeanUtil.copyProperties(file, bo);
65-
if (file.getType().equals(FileConstant.LOCAL)) {
66-
String s = FileUtil.mainName(dir);
67-
bo.setPath(domain + s + "/" + file.getName());
68-
}
69-
return bo;
70-
}).collect(Collectors.toList());
7160
return res;
7261
}
7362

7463
@Override
7564
public boolean checkFileExistByMd5(String md5) {
7665
return this.getBaseMapper().selectCountByMd5(md5) > 0;
7766
}
67+
68+
private FileBO transformDoToBo(FileDO file, String key) {
69+
FileBO bo = new FileBO();
70+
BeanUtil.copyProperties(file, bo);
71+
if (file.getType().equals(FileConstant.LOCAL)) {
72+
String s = FileUtil.mainName(dir);
73+
bo.setUrl(domain + s + "/" + file.getName());
74+
} else {
75+
bo.setUrl(file.getPath());
76+
}
77+
bo.setKey(key);
78+
return bo;
79+
}
7880
}

0 commit comments

Comments
 (0)