Commit 36d7775171d3fdc381414b84a450db93cafa92ef
1 parent
d14ad888
1. 修改文件名和文件路径字段长度一致,因为如果不存在文件名的情况下,会使用文件路径作为字段名,防止数据库报错字段内容太长。
2. 修改type字段为ext_name,因为此字段本来就存的文件扩展名,并且新增mime_type字段,用来存储文件的类型。方便后期拓展网盘项目。 3. 修改文件路径生成方式:之前是md5,现在是sha256,降低文件碰撞概率。方便拓展网盘项目,实现秒传等功能。
Showing
12 changed files
with
58 additions
and
35 deletions
sql/mysql/ruoyi-vue-pro.sql
| @@ -689,10 +689,11 @@ DROP TABLE IF EXISTS `infra_file`; | @@ -689,10 +689,11 @@ DROP TABLE IF EXISTS `infra_file`; | ||
| 689 | CREATE TABLE `infra_file` ( | 689 | CREATE TABLE `infra_file` ( |
| 690 | `id` bigint NOT NULL AUTO_INCREMENT COMMENT '文件编号', | 690 | `id` bigint NOT NULL AUTO_INCREMENT COMMENT '文件编号', |
| 691 | `config_id` bigint NULL DEFAULT NULL COMMENT '配置编号', | 691 | `config_id` bigint NULL DEFAULT NULL COMMENT '配置编号', |
| 692 | - `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件名', | 692 | + `name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件名', |
| 693 | `path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径', | 693 | `path` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径', |
| 694 | `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件 URL', | 694 | `url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件 URL', |
| 695 | - `type` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件类型', | 695 | + `ext_name` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件扩展名', |
| 696 | + `mime_type` varchar(63) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件MIME类型', | ||
| 696 | `size` int NOT NULL COMMENT '文件大小', | 697 | `size` int NOT NULL COMMENT '文件大小', |
| 697 | `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', | 698 | `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', |
| 698 | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | 699 | `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
sql/oracle/ruoyi-vue-pro.sql
| @@ -878,7 +878,8 @@ CREATE TABLE "INFRA_FILE" ( | @@ -878,7 +878,8 @@ CREATE TABLE "INFRA_FILE" ( | ||
| 878 | "CONFIG_ID" NUMBER(20,0), | 878 | "CONFIG_ID" NUMBER(20,0), |
| 879 | "PATH" NVARCHAR2(512), | 879 | "PATH" NVARCHAR2(512), |
| 880 | "URL" NCLOB, | 880 | "URL" NCLOB, |
| 881 | - "TYPE" NVARCHAR2(63), | 881 | + "EXT_NAME" NVARCHAR2(63), |
| 882 | + "MIME_TYPE" NVARCHAR2(63), | ||
| 882 | "SIZE" NUMBER(11,0) NOT NULL, | 883 | "SIZE" NUMBER(11,0) NOT NULL, |
| 883 | "CREATOR" NVARCHAR2(64), | 884 | "CREATOR" NVARCHAR2(64), |
| 884 | "CREATE_TIME" DATE NOT NULL, | 885 | "CREATE_TIME" DATE NOT NULL, |
| @@ -908,7 +909,8 @@ COMMENT ON COLUMN "INFRA_FILE"."ID" IS '文件编号'; | @@ -908,7 +909,8 @@ COMMENT ON COLUMN "INFRA_FILE"."ID" IS '文件编号'; | ||
| 908 | COMMENT ON COLUMN "INFRA_FILE"."CONFIG_ID" IS '配置编号'; | 909 | COMMENT ON COLUMN "INFRA_FILE"."CONFIG_ID" IS '配置编号'; |
| 909 | COMMENT ON COLUMN "INFRA_FILE"."PATH" IS '文件路径'; | 910 | COMMENT ON COLUMN "INFRA_FILE"."PATH" IS '文件路径'; |
| 910 | COMMENT ON COLUMN "INFRA_FILE"."URL" IS '文件 URL'; | 911 | COMMENT ON COLUMN "INFRA_FILE"."URL" IS '文件 URL'; |
| 911 | -COMMENT ON COLUMN "INFRA_FILE"."TYPE" IS '文件类型'; | 912 | +COMMENT ON COLUMN "INFRA_FILE"."EXT_NAME" IS '文件扩展名'; |
| 913 | +COMMENT ON COLUMN "INFRA_FILE"."MIME_TYPE" IS '文件MIME类型'; | ||
| 912 | COMMENT ON COLUMN "INFRA_FILE"."SIZE" IS '文件大小'; | 914 | COMMENT ON COLUMN "INFRA_FILE"."SIZE" IS '文件大小'; |
| 913 | COMMENT ON COLUMN "INFRA_FILE"."CREATOR" IS '创建者'; | 915 | COMMENT ON COLUMN "INFRA_FILE"."CREATOR" IS '创建者'; |
| 914 | COMMENT ON COLUMN "INFRA_FILE"."CREATE_TIME" IS '创建时间'; | 916 | COMMENT ON COLUMN "INFRA_FILE"."CREATE_TIME" IS '创建时间'; |
sql/postgresql/ruoyi-vue-pro.sql
| @@ -1717,21 +1717,23 @@ CREATE TABLE "infra_file" ( | @@ -1717,21 +1717,23 @@ CREATE TABLE "infra_file" ( | ||
| 1717 | "config_id" int8, | 1717 | "config_id" int8, |
| 1718 | "path" varchar(512) COLLATE "pg_catalog"."default" NOT NULL, | 1718 | "path" varchar(512) COLLATE "pg_catalog"."default" NOT NULL, |
| 1719 | "url" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL, | 1719 | "url" varchar(1024) COLLATE "pg_catalog"."default" NOT NULL, |
| 1720 | - "type" varchar(63) COLLATE "pg_catalog"."default", | 1720 | + "ext_name" varchar(63) COLLATE "pg_catalog"."default", |
| 1721 | + "mime_type" varchar(63) COLLATE "pg_catalog"."default", | ||
| 1721 | "size" int4 NOT NULL, | 1722 | "size" int4 NOT NULL, |
| 1722 | "creator" varchar(64) COLLATE "pg_catalog"."default", | 1723 | "creator" varchar(64) COLLATE "pg_catalog"."default", |
| 1723 | "create_time" timestamp(6) NOT NULL, | 1724 | "create_time" timestamp(6) NOT NULL, |
| 1724 | "updater" varchar(64) COLLATE "pg_catalog"."default", | 1725 | "updater" varchar(64) COLLATE "pg_catalog"."default", |
| 1725 | "update_time" timestamp(6) NOT NULL, | 1726 | "update_time" timestamp(6) NOT NULL, |
| 1726 | "deleted" int2 NOT NULL DEFAULT 0, | 1727 | "deleted" int2 NOT NULL DEFAULT 0, |
| 1727 | - "name" varchar(255) COLLATE "pg_catalog"."default" | 1728 | + "name" varchar(512) COLLATE "pg_catalog"."default" |
| 1728 | ) | 1729 | ) |
| 1729 | ; | 1730 | ; |
| 1730 | COMMENT ON COLUMN "infra_file"."id" IS '文件编号'; | 1731 | COMMENT ON COLUMN "infra_file"."id" IS '文件编号'; |
| 1731 | COMMENT ON COLUMN "infra_file"."config_id" IS '配置编号'; | 1732 | COMMENT ON COLUMN "infra_file"."config_id" IS '配置编号'; |
| 1732 | COMMENT ON COLUMN "infra_file"."path" IS '文件路径'; | 1733 | COMMENT ON COLUMN "infra_file"."path" IS '文件路径'; |
| 1733 | COMMENT ON COLUMN "infra_file"."url" IS '文件 URL'; | 1734 | COMMENT ON COLUMN "infra_file"."url" IS '文件 URL'; |
| 1734 | -COMMENT ON COLUMN "infra_file"."type" IS '文件类型'; | 1735 | +COMMENT ON COLUMN "infra_file"."ext_name" IS '文件扩展名'; |
| 1736 | +COMMENT ON COLUMN "infra_file"."mime_type" IS '文件MIME类型'; | ||
| 1735 | COMMENT ON COLUMN "infra_file"."size" IS '文件大小'; | 1737 | COMMENT ON COLUMN "infra_file"."size" IS '文件大小'; |
| 1736 | COMMENT ON COLUMN "infra_file"."creator" IS '创建者'; | 1738 | COMMENT ON COLUMN "infra_file"."creator" IS '创建者'; |
| 1737 | COMMENT ON COLUMN "infra_file"."create_time" IS '创建时间'; | 1739 | COMMENT ON COLUMN "infra_file"."create_time" IS '创建时间'; |
sql/sqlserver/ruoyi-vue-pro.sql
| @@ -2634,14 +2634,15 @@ CREATE TABLE [dbo].[infra_file] ( | @@ -2634,14 +2634,15 @@ CREATE TABLE [dbo].[infra_file] ( | ||
| 2634 | [config_id] bigint NULL, | 2634 | [config_id] bigint NULL, |
| 2635 | [path] nvarchar(512) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | 2635 | [path] nvarchar(512) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, |
| 2636 | [url] nvarchar(1024) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | 2636 | [url] nvarchar(1024) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, |
| 2637 | - [type] nvarchar(63) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | 2637 | + [ext_name] nvarchar(63) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, |
| 2638 | + [mime_type] nvarchar(63) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
| 2638 | [size] int NOT NULL, | 2639 | [size] int NOT NULL, |
| 2639 | [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | 2640 | [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, |
| 2640 | [create_time] datetime2(7) NOT NULL, | 2641 | [create_time] datetime2(7) NOT NULL, |
| 2641 | [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | 2642 | [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, |
| 2642 | [update_time] datetime2(7) NOT NULL, | 2643 | [update_time] datetime2(7) NOT NULL, |
| 2643 | [deleted] bit DEFAULT 0 NOT NULL, | 2644 | [deleted] bit DEFAULT 0 NOT NULL, |
| 2644 | - [name] nvarchar(256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL | 2645 | + [name] nvarchar(512) COLLATE SQL_Latin1_General_CP1_CI_AS NULL |
| 2645 | ) | 2646 | ) |
| 2646 | GO | 2647 | GO |
| 2647 | 2648 | ||
| @@ -2677,10 +2678,17 @@ EXEC sp_addextendedproperty | @@ -2677,10 +2678,17 @@ EXEC sp_addextendedproperty | ||
| 2677 | GO | 2678 | GO |
| 2678 | 2679 | ||
| 2679 | EXEC sp_addextendedproperty | 2680 | EXEC sp_addextendedproperty |
| 2680 | -'MS_Description', N'文件类型', | 2681 | +'MS_Description', N'文件扩展名', |
| 2681 | 'SCHEMA', N'dbo', | 2682 | 'SCHEMA', N'dbo', |
| 2682 | 'TABLE', N'infra_file', | 2683 | 'TABLE', N'infra_file', |
| 2683 | -'COLUMN', N'type' | 2684 | +'COLUMN', N'ext_name' |
| 2685 | +GO | ||
| 2686 | + | ||
| 2687 | +EXEC sp_addextendedproperty | ||
| 2688 | +'MS_Description', N'文件MIME类型', | ||
| 2689 | +'SCHEMA', N'dbo', | ||
| 2690 | +'TABLE', N'infra_file', | ||
| 2691 | +'COLUMN', N'mime_type' | ||
| 2684 | GO | 2692 | GO |
| 2685 | 2693 | ||
| 2686 | EXEC sp_addextendedproperty | 2694 | EXEC sp_addextendedproperty |
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApi.java
| @@ -14,7 +14,7 @@ public interface FileApi { | @@ -14,7 +14,7 @@ public interface FileApi { | ||
| 14 | * @return 文件路径 | 14 | * @return 文件路径 |
| 15 | */ | 15 | */ |
| 16 | default String createFile(byte[] content) { | 16 | default String createFile(byte[] content) { |
| 17 | - return createFile(null, null, content); | 17 | + return createFile(null, null, "application/octet-stream", content); |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| @@ -25,17 +25,18 @@ public interface FileApi { | @@ -25,17 +25,18 @@ public interface FileApi { | ||
| 25 | * @return 文件路径 | 25 | * @return 文件路径 |
| 26 | */ | 26 | */ |
| 27 | default String createFile(String path, byte[] content) { | 27 | default String createFile(String path, byte[] content) { |
| 28 | - return createFile(null, path, content); | 28 | + return createFile(null, path, "application/octet-stream", content); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | * 保存文件,并返回文件的访问路径 | 32 | * 保存文件,并返回文件的访问路径 |
| 33 | * | 33 | * |
| 34 | - * @param name 文件名称 | ||
| 35 | - * @param path 文件路径 | ||
| 36 | - * @param content 文件内容 | 34 | + * @param name 文件名称 |
| 35 | + * @param path 文件路径 | ||
| 36 | + * @param mimeType 文件类型 | ||
| 37 | + * @param content 文件内容 | ||
| 37 | * @return 文件路径 | 38 | * @return 文件路径 |
| 38 | */ | 39 | */ |
| 39 | - String createFile(String name, String path, byte[] content); | 40 | + String createFile(String name, String path, String mimeType, byte[] content); |
| 40 | 41 | ||
| 41 | } | 42 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/file/FileApiImpl.java
| @@ -19,8 +19,8 @@ public class FileApiImpl implements FileApi { | @@ -19,8 +19,8 @@ public class FileApiImpl implements FileApi { | ||
| 19 | private FileService fileService; | 19 | private FileService fileService; |
| 20 | 20 | ||
| 21 | @Override | 21 | @Override |
| 22 | - public String createFile(String name, String path, byte[] content) { | ||
| 23 | - return fileService.createFile(name, path, content); | 22 | + public String createFile(String name, String path, String mimeType, byte[] content) { |
| 23 | + return fileService.createFile(name, path, mimeType, content); | ||
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | } | 26 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
| @@ -46,7 +46,7 @@ public class FileController { | @@ -46,7 +46,7 @@ public class FileController { | ||
| 46 | @OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要 | 46 | @OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要 |
| 47 | public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file, | 47 | public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file, |
| 48 | @RequestParam(value = "path", required = false) String path) throws Exception { | 48 | @RequestParam(value = "path", required = false) String path) throws Exception { |
| 49 | - return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()))); | 49 | + return success(fileService.createFile(file.getOriginalFilename(), path, file.getContentType(), IoUtil.readBytes(file.getInputStream()))); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @DeleteMapping("/delete") | 52 | @DeleteMapping("/delete") |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDO.java
| @@ -38,7 +38,7 @@ public class FileDO extends BaseDO { | @@ -38,7 +38,7 @@ public class FileDO extends BaseDO { | ||
| 38 | */ | 38 | */ |
| 39 | private String name; | 39 | private String name; |
| 40 | /** | 40 | /** |
| 41 | - * 路径,即文件名 | 41 | + * 路径,即文件名,唯一不可重复 |
| 42 | */ | 42 | */ |
| 43 | private String path; | 43 | private String path; |
| 44 | /** | 44 | /** |
| @@ -46,11 +46,15 @@ public class FileDO extends BaseDO { | @@ -46,11 +46,15 @@ public class FileDO extends BaseDO { | ||
| 46 | */ | 46 | */ |
| 47 | private String url; | 47 | private String url; |
| 48 | /** | 48 | /** |
| 49 | - * 文件类型 | ||
| 50 | - * | 49 | + * 文件扩展名 |
| 50 | + * <p> | ||
| 51 | * 通过 {@link cn.hutool.core.io.FileTypeUtil#getType(InputStream)} 获取 | 51 | * 通过 {@link cn.hutool.core.io.FileTypeUtil#getType(InputStream)} 获取 |
| 52 | */ | 52 | */ |
| 53 | - private String type; | 53 | + private String extName; |
| 54 | + /** | ||
| 55 | + * 文件的MIME类型,默认为"application/octet-stream" | ||
| 56 | + */ | ||
| 57 | + private String mimeType; | ||
| 54 | /** | 58 | /** |
| 55 | * 文件大小 | 59 | * 文件大小 |
| 56 | */ | 60 | */ |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/file/FileMapper.java
| @@ -18,7 +18,7 @@ public interface FileMapper extends BaseMapperX<FileDO> { | @@ -18,7 +18,7 @@ public interface FileMapper extends BaseMapperX<FileDO> { | ||
| 18 | default PageResult<FileDO> selectPage(FilePageReqVO reqVO) { | 18 | default PageResult<FileDO> selectPage(FilePageReqVO reqVO) { |
| 19 | return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>() | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>() |
| 20 | .likeIfPresent(FileDO::getPath, reqVO.getPath()) | 20 | .likeIfPresent(FileDO::getPath, reqVO.getPath()) |
| 21 | - .likeIfPresent(FileDO::getType, reqVO.getType()) | 21 | + .likeIfPresent(FileDO::getExtName, reqVO.getType()) |
| 22 | .betweenIfPresent(FileDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | 22 | .betweenIfPresent(FileDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) |
| 23 | .orderByDesc(FileDO::getId)); | 23 | .orderByDesc(FileDO::getId)); |
| 24 | } | 24 | } |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java
| @@ -24,10 +24,11 @@ public interface FileService { | @@ -24,10 +24,11 @@ public interface FileService { | ||
| 24 | * | 24 | * |
| 25 | * @param name 文件名称 | 25 | * @param name 文件名称 |
| 26 | * @param path 文件路径 | 26 | * @param path 文件路径 |
| 27 | + * @param mimeType 文件MIME类型 | ||
| 27 | * @param content 文件内容 | 28 | * @param content 文件内容 |
| 28 | * @return 文件路径 | 29 | * @return 文件路径 |
| 29 | */ | 30 | */ |
| 30 | - String createFile(String name, String path, byte[] content); | 31 | + String createFile(String name, String path, String mimeType,byte[] content); |
| 31 | 32 | ||
| 32 | /** | 33 | /** |
| 33 | * 删除文件 | 34 | * 删除文件 |
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
| 1 | package cn.iocoder.yudao.module.infra.service.file; | 1 | package cn.iocoder.yudao.module.infra.service.file; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.io.FileTypeUtil; | 3 | import cn.hutool.core.io.FileTypeUtil; |
| 4 | +import cn.hutool.core.io.file.FileNameUtil; | ||
| 4 | import cn.hutool.core.lang.Assert; | 5 | import cn.hutool.core.lang.Assert; |
| 5 | import cn.hutool.core.util.StrUtil; | 6 | import cn.hutool.core.util.StrUtil; |
| 6 | import cn.hutool.crypto.digest.DigestUtil; | 7 | import cn.hutool.crypto.digest.DigestUtil; |
| @@ -39,11 +40,13 @@ public class FileServiceImpl implements FileService { | @@ -39,11 +40,13 @@ public class FileServiceImpl implements FileService { | ||
| 39 | 40 | ||
| 40 | @Override | 41 | @Override |
| 41 | @SneakyThrows | 42 | @SneakyThrows |
| 42 | - public String createFile(String name, String path, byte[] content) { | ||
| 43 | - // 计算默认的 path 名 | ||
| 44 | - String type = FileTypeUtil.getType(new ByteArrayInputStream(content), name); | 43 | + public String createFile(String name, String path, String mimeType, byte[] content) { |
| 44 | + //获取文件的真实扩展名 | ||
| 45 | + String extName = FileTypeUtil.getType(new ByteArrayInputStream(content), name); | ||
| 46 | + FileNameUtil.extName(name); | ||
| 45 | if (StrUtil.isEmpty(path)) { | 47 | if (StrUtil.isEmpty(path)) { |
| 46 | - path = DigestUtil.md5Hex(content) + '.' + type; | 48 | + //使用sha256计算文件都唯一路径,降低碰撞概率 |
| 49 | + path = DigestUtil.sha256Hex(content) + '.' + extName; | ||
| 47 | } | 50 | } |
| 48 | // 如果 name 为空,则使用 path 填充 | 51 | // 如果 name 为空,则使用 path 填充 |
| 49 | if (StrUtil.isEmpty(name)) { | 52 | if (StrUtil.isEmpty(name)) { |
| @@ -61,7 +64,8 @@ public class FileServiceImpl implements FileService { | @@ -61,7 +64,8 @@ public class FileServiceImpl implements FileService { | ||
| 61 | file.setName(name); | 64 | file.setName(name); |
| 62 | file.setPath(path); | 65 | file.setPath(path); |
| 63 | file.setUrl(url); | 66 | file.setUrl(url); |
| 64 | - file.setType(type); | 67 | + file.setExtName(extName); |
| 68 | + file.setMimeType(mimeType); | ||
| 65 | file.setSize(content.length); | 69 | file.setSize(content.length); |
| 66 | fileMapper.insert(file); | 70 | fileMapper.insert(file); |
| 67 | return url; | 71 | return url; |
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileServiceTest.java
| @@ -40,7 +40,7 @@ public class FileServiceTest extends BaseDbUnitTest { | @@ -40,7 +40,7 @@ public class FileServiceTest extends BaseDbUnitTest { | ||
| 40 | // mock 数据 | 40 | // mock 数据 |
| 41 | FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到 | 41 | FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到 |
| 42 | o.setPath("yunai"); | 42 | o.setPath("yunai"); |
| 43 | - o.setType("jpg"); | 43 | + o.setExtName("jpg"); |
| 44 | o.setCreateTime(buildTime(2021, 1, 15)); | 44 | o.setCreateTime(buildTime(2021, 1, 15)); |
| 45 | }); | 45 | }); |
| 46 | fileMapper.insert(dbFile); | 46 | fileMapper.insert(dbFile); |
| @@ -48,7 +48,7 @@ public class FileServiceTest extends BaseDbUnitTest { | @@ -48,7 +48,7 @@ public class FileServiceTest extends BaseDbUnitTest { | ||
| 48 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou"))); | 48 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou"))); |
| 49 | // 测试 type 不匹配 | 49 | // 测试 type 不匹配 |
| 50 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { | 50 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { |
| 51 | - o.setType("png"); | 51 | + o.setExtName("png"); |
| 52 | })); | 52 | })); |
| 53 | // 测试 createTime 不匹配 | 53 | // 测试 createTime 不匹配 |
| 54 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { | 54 | fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { |
| @@ -82,7 +82,7 @@ public class FileServiceTest extends BaseDbUnitTest { | @@ -82,7 +82,7 @@ public class FileServiceTest extends BaseDbUnitTest { | ||
| 82 | when(client.getId()).thenReturn(10L); | 82 | when(client.getId()).thenReturn(10L); |
| 83 | String name = "单测文件名"; | 83 | String name = "单测文件名"; |
| 84 | // 调用 | 84 | // 调用 |
| 85 | - String result = fileService.createFile(name, path, content); | 85 | + String result = fileService.createFile(name, path, "application/octet-stream", content); |
| 86 | // 断言 | 86 | // 断言 |
| 87 | assertEquals(result, url); | 87 | assertEquals(result, url); |
| 88 | // 校验数据 | 88 | // 校验数据 |
| @@ -90,7 +90,7 @@ public class FileServiceTest extends BaseDbUnitTest { | @@ -90,7 +90,7 @@ public class FileServiceTest extends BaseDbUnitTest { | ||
| 90 | assertEquals(10L, file.getConfigId()); | 90 | assertEquals(10L, file.getConfigId()); |
| 91 | assertEquals(path, file.getPath()); | 91 | assertEquals(path, file.getPath()); |
| 92 | assertEquals(url, file.getUrl()); | 92 | assertEquals(url, file.getUrl()); |
| 93 | - assertEquals("jpg", file.getType()); | 93 | + assertEquals("jpg", file.getExtName()); |
| 94 | assertEquals(content.length, file.getSize()); | 94 | assertEquals(content.length, file.getSize()); |
| 95 | } | 95 | } |
| 96 | 96 |