!186 文件表建加原文件名称字段original_name,相关代码修改

Merge pull request !186 from 谢谢的谢/master
This commit is contained in:
芋道源码 2022-06-14 23:52:47 +00:00 committed by Gitee
commit df7bba7f30
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
10 changed files with 36 additions and 16 deletions

View File

@ -1,7 +1,5 @@
package cn.iocoder.yudao.module.infra.api.file; package cn.iocoder.yudao.module.infra.api.file;
import cn.hutool.core.util.IdUtil;
/** /**
* 文件 API 接口 * 文件 API 接口
* *
@ -15,9 +13,9 @@ public interface FileApi {
* @param content 文件内容 * @param content 文件内容
* @return 文件路径 * @return 文件路径
*/ */
default String createFile(byte[] content) throws Exception { default String createFile(byte[] content) throws Exception {
return createFile(IdUtil.fastUUID(), content); return createFile(null, null, content);
} }
/** /**
* 保存文件并返回文件的访问路径 * 保存文件并返回文件的访问路径
@ -26,6 +24,18 @@ public interface FileApi {
* @param content 文件内容 * @param content 文件内容
* @return 文件路径 * @return 文件路径
*/ */
String createFile(String path, byte[] content) throws Exception; default String createFile(String path, byte[] content) throws Exception {
return createFile(null, path, content);
}
/**
* 保存文件并返回文件的访问路径
*
* @param name 原文件名称
* @param path 文件路径
* @param content 文件内容
* @return 文件路径
*/
String createFile(String name, String path, byte[] content) throws Exception;
} }

View File

@ -19,8 +19,8 @@ public class FileApiImpl implements FileApi {
private FileService fileService; private FileService fileService;
@Override @Override
public String createFile(String path, byte[] content) throws Exception { public String createFile(String name, String path, byte[] content) throws Exception {
return fileService.createFile(path, content); return fileService.createFile(name, path, content);
} }
} }

View File

@ -46,7 +46,7 @@ public class FileController {
@OperateLog(logArgs = false) // 上传文件没有记录操作日志的必要 @OperateLog(logArgs = false) // 上传文件没有记录操作日志的必要
public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file, public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam(value = "path", required = false) String path) throws Exception { @RequestParam(value = "path", required = false) String path) throws Exception {
return success(fileService.createFile(path, IoUtil.readBytes(file.getInputStream()))); return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")

View File

@ -16,6 +16,9 @@ public class FileRespVO {
@ApiModelProperty(value = "文件路径", required = true, example = "yudao.jpg") @ApiModelProperty(value = "文件路径", required = true, example = "yudao.jpg")
private String path; private String path;
@ApiModelProperty(value = "原文件名", required = true, example = "yudao.jpg")
private String name;
@ApiModelProperty(value = "文件 URL", required = true, example = "https://www.iocoder.cn/yudao.jpg") @ApiModelProperty(value = "文件 URL", required = true, example = "https://www.iocoder.cn/yudao.jpg")
private String url; private String url;

View File

@ -33,6 +33,10 @@ public class FileDO extends BaseDO {
* 关联 {@link FileConfigDO#getId()} * 关联 {@link FileConfigDO#getId()}
*/ */
private Long configId; private Long configId;
/**
* 原文件名
*/
private String name;
/** /**
* 路径即文件名 * 路径即文件名
*/ */

View File

@ -22,11 +22,12 @@ public interface FileService {
/** /**
* 保存文件并返回文件的访问路径 * 保存文件并返回文件的访问路径
* *
* @param name 原文件名称
* @param path 文件路径 * @param path 文件路径
* @param content 文件内容 * @param content 文件内容
* @return 文件路径 * @return 文件路径
*/ */
String createFile(String path, byte[] content) throws Exception; String createFile(String name, String path, byte[] content) throws Exception;
/** /**
* 删除文件 * 删除文件

View File

@ -37,9 +37,9 @@ public class FileServiceImpl implements FileService {
} }
@Override @Override
public String createFile(String path, byte[] content) throws Exception { public String createFile(String name, String path, byte[] content) throws Exception {
// 计算默认的 path // 计算默认的 path
String type = FileTypeUtil.getType(new ByteArrayInputStream(content), path); String type = FileTypeUtil.getType(new ByteArrayInputStream(content), name);
if (StrUtil.isEmpty(path)) { if (StrUtil.isEmpty(path)) {
path = DigestUtil.md5Hex(content) + '.' + type; path = DigestUtil.md5Hex(content) + '.' + type;
} }
@ -52,6 +52,7 @@ public class FileServiceImpl implements FileService {
// 保存到数据库 // 保存到数据库
FileDO file = new FileDO(); FileDO file = new FileDO();
file.setConfigId(client.getId()); file.setConfigId(client.getId());
file.setName(name);
file.setPath(path); file.setPath(path);
file.setUrl(url); file.setUrl(url);
file.setType(type); file.setType(type);

View File

@ -80,9 +80,9 @@ public class FileServiceTest extends BaseDbUnitTest {
String url = randomString(); String url = randomString();
when(client.upload(same(content), same(path))).thenReturn(url); when(client.upload(same(content), same(path))).thenReturn(url);
when(client.getId()).thenReturn(10L); when(client.getId()).thenReturn(10L);
String name = "单测文件名";
// 调用 // 调用
String result = fileService.createFile(path, content); String result = fileService.createFile(name, path, content);
// 断言 // 断言
assertEquals(result, url); assertEquals(result, url);
// 校验数据 // 校验数据

View File

@ -225,7 +225,7 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
ByteArrayInputStream avatarFile = new ByteArrayInputStream(avatarFileBytes); ByteArrayInputStream avatarFile = new ByteArrayInputStream(avatarFileBytes);
// mock 方法 // mock 方法
String avatar = randomString(); String avatar = randomString();
when(fileApi.createFile(eq(avatarFileBytes))).thenReturn(avatar); when(fileApi.createFile(eq( avatarFileBytes))).thenReturn(avatar);
// 调用 // 调用
userService.updateUserAvatar(userId, avatarFile); userService.updateUserAvatar(userId, avatarFile);

View File

@ -26,6 +26,7 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="原文件名" align="center" prop="name" />
<el-table-column label="文件名" align="center" prop="path" /> <el-table-column label="文件名" align="center" prop="path" />
<el-table-column label="URL" align="center" prop="url" /> <el-table-column label="URL" align="center" prop="url" />
<el-table-column label="文件大小" align="center" prop="size" width="120" :formatter="sizeFormat" /> <el-table-column label="文件大小" align="center" prop="size" width="120" :formatter="sizeFormat" />
@ -160,7 +161,7 @@ export default {
}, },
/** 处理上传的文件发生变化 */ /** 处理上传的文件发生变化 */
handleFileChange(file, fileList) { handleFileChange(file, fileList) {
this.upload.data.path = file.name;
}, },
/** 处理文件上传中 */ /** 处理文件上传中 */
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {