优化文件的 type 识别与存储

This commit is contained in:
YunaiV
2022-07-10 00:00:56 +08:00
parent fec84f2682
commit 34ea1db585
5 changed files with 55 additions and 18 deletions

View File

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.io.InputStream;
/**
* 文件表
* 每次文件上传,都会记录一条记录到该表中
@@ -46,9 +44,7 @@ public class FileDO extends BaseDO {
*/
private String url;
/**
* 文件类型
*
* 通过 {@link cn.hutool.core.io.FileTypeUtil#getType(InputStream)} 获取
* 文件的 MIME 类型,例如 "application/octet-stream"
*/
private String type;
/**

View File

@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.infra.service.file;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.io.FileUtils;
import cn.iocoder.yudao.framework.file.core.client.FileClient;
import cn.iocoder.yudao.framework.file.core.utils.FileTypeUtils;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
@@ -40,10 +40,9 @@ public class FileServiceImpl implements FileService {
@SneakyThrows
public String createFile(String name, String path, byte[] content) {
// 计算默认的 path 名
String type = FileTypeUtils.getMineType(content);
String type = FileTypeUtils.getMineType(content, name);
if (StrUtil.isEmpty(path)) {
path = DigestUtil.md5Hex(content)
+ '.' + StrUtil.subAfter(type, '/', true); // 文件的后缀
path = FileUtils.generatePath(content, name);
}
// 如果 name 为空,则使用 path 填充
if (StrUtil.isEmpty(name)) {