修改mimetype字段为type,修改获取文件后缀名方式,目前图片文件预览还有些问题

This commit is contained in:
jiangqiang 2022-07-08 09:14:39 +08:00
parent 0ed3321719
commit da0ba10503
7 changed files with 14 additions and 31 deletions

View File

@ -21,8 +21,8 @@ public class FilePageReqVO extends PageParam {
@ApiModelProperty(value = "文件路径", example = "yudao", notes = "模糊匹配") @ApiModelProperty(value = "文件路径", example = "yudao", notes = "模糊匹配")
private String path; private String path;
@ApiModelProperty(value = "文件扩展名", example = "jpg", notes = "模糊匹配") @ApiModelProperty(value = "文件类型", example = "application/octet-stream", notes = "模糊匹配")
private String extName; private String type;
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "开始创建时间") @ApiModelProperty(value = "开始创建时间")

View File

@ -22,11 +22,8 @@ public class FileRespVO {
@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;
@ApiModelProperty(value = "文件扩展名", example = "jpg")
private String extName;
@ApiModelProperty(value = "文件MIME类型", example = "application/octet-stream") @ApiModelProperty(value = "文件MIME类型", example = "application/octet-stream")
private String mimeType; private String type;
@ApiModelProperty(value = "文件大小", example = "2048", required = true) @ApiModelProperty(value = "文件大小", example = "2048", required = true)
private Integer size; private Integer size;

View File

@ -45,16 +45,11 @@ public class FileDO extends BaseDO {
* 访问地址 * 访问地址
*/ */
private String url; private String url;
/**
* 文件扩展名
* <p>
* 通过 {@link cn.hutool.core.io.FileTypeUtil#getType(InputStream)} 获取
*/
private String extName;
/** /**
* 文件的MIME类型默认为"application/octet-stream" * 文件的MIME类型默认为"application/octet-stream"
*/ */
private String mimeType; private String type;
/** /**
* 文件大小 * 文件大小
*/ */

View File

@ -18,7 +18,7 @@ public interface FileMapper extends BaseMapperX<FileDO> {
default PageResult<FileDO> selectPage(FilePageReqVO reqVO) { default PageResult<FileDO> selectPage(FilePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>() return selectPage(reqVO, new LambdaQueryWrapperX<FileDO>()
.likeIfPresent(FileDO::getPath, reqVO.getPath()) .likeIfPresent(FileDO::getPath, reqVO.getPath())
.likeIfPresent(FileDO::getExtName, reqVO.getExtName()) .likeIfPresent(FileDO::getType, reqVO.getType())
.betweenIfPresent(FileDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) .betweenIfPresent(FileDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())
.orderByDesc(FileDO::getId)); .orderByDesc(FileDO::getId));
} }

View File

@ -41,12 +41,12 @@ public class FileServiceImpl implements FileService {
@Override @Override
@SneakyThrows @SneakyThrows
public String createFile(String name, String path, String mimeType, byte[] content) { public String createFile(String name, String path, String mimeType, byte[] content) {
//获取文件的真实扩展名 //获取文件的扩展名
String extName = FileTypeUtil.getType(new ByteArrayInputStream(content), name); String extName = FileNameUtil.extName(name);
FileNameUtil.extName(name);
if (StrUtil.isEmpty(path)) { if (StrUtil.isEmpty(path)) {
//使用sha256计算文件都唯一路径降低碰撞概率 //使用sha256计算文件都唯一路径降低碰撞概率
path = DigestUtil.sha256Hex(content) + '.' + extName; String sha256Hex = DigestUtil.sha256Hex(content);
path = StrUtil.isBlank(extName) ? sha256Hex : (sha256Hex + '.' + extName);
} }
// 如果 name 为空则使用 path 填充 // 如果 name 为空则使用 path 填充
if (StrUtil.isEmpty(name)) { if (StrUtil.isEmpty(name)) {
@ -64,8 +64,7 @@ public class FileServiceImpl implements FileService {
file.setName(name); file.setName(name);
file.setPath(path); file.setPath(path);
file.setUrl(url); file.setUrl(url);
file.setExtName(extName); file.setType(mimeType);
file.setMimeType(mimeType);
file.setSize(content.length); file.setSize(content.length);
fileMapper.insert(file); fileMapper.insert(file);
return url; return url;

View File

@ -40,16 +40,11 @@ public class FileServiceTest extends BaseDbUnitTest {
// mock 数据 // mock 数据
FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到 FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到
o.setPath("yunai"); o.setPath("yunai");
o.setExtName("jpg");
o.setCreateTime(buildTime(2021, 1, 15)); o.setCreateTime(buildTime(2021, 1, 15));
}); });
fileMapper.insert(dbFile); fileMapper.insert(dbFile);
// 测试 path 不匹配 // 测试 path 不匹配
fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou"))); fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou")));
// 测试 type 不匹配
fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> {
o.setExtName("png");
}));
// 测试 createTime 不匹配 // 测试 createTime 不匹配
fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> {
o.setCreateTime(buildTime(2020, 1, 15)); o.setCreateTime(buildTime(2020, 1, 15));
@ -90,7 +85,6 @@ public class FileServiceTest extends BaseDbUnitTest {
assertEquals(10L, file.getConfigId()); assertEquals(10L, file.getConfigId());
assertEquals(path, file.getPath()); assertEquals(path, file.getPath());
assertEquals(url, file.getUrl()); assertEquals(url, file.getUrl());
assertEquals("jpg", file.getExtName());
assertEquals(content.length, file.getSize()); assertEquals(content.length, file.getSize());
} }

View File

@ -30,11 +30,10 @@
<el-table-column :show-overflow-tooltip="true" label="文件路径" align="center" min-width="300" prop="path" /> <el-table-column :show-overflow-tooltip="true" label="文件路径" align="center" min-width="300" prop="path" />
<el-table-column :show-overflow-tooltip="true" label="文件 URL" align="center" min-width="400" prop="url" /> <el-table-column :show-overflow-tooltip="true" label="文件 URL" align="center" min-width="400" 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" />
<el-table-column label="文件类型" align="center" prop="mimeType" width="210" /> <el-table-column label="文件类型" align="center" prop="type" width="210" />
<el-table-column label="文件扩展名" align="center" prop="extName" width="80" />
<!-- <el-table-column label="文件内容" align="center" prop="content">--> <!-- <el-table-column label="文件内容" align="center" prop="content">-->
<!-- <template slot-scope="scope">--> <!-- <template slot-scope="scope">-->
<!-- <img v-if="scope.row.extName === 'jpg' || scope.row.extName === 'png' || scope.row.extName === 'gif'"--> <!-- <img v-if="scope.row.type&&scope.row.type.indexOf('image/') === 0"-->
<!-- width="200px" :src="getFileUrl + scope.row.id">--> <!-- width="200px" :src="getFileUrl + scope.row.id">-->
<!-- <i v-else>非图片无法预览</i>--> <!-- <i v-else>非图片无法预览</i>-->
<!-- </template>--> <!-- </template>-->
@ -101,8 +100,7 @@ export default {
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
path: null, path: null
extName: null,
}, },
// //
upload: { upload: {