mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-22 23:31:52 +08:00
优化代码
This commit is contained in:
parent
dd726f7985
commit
2621f2195d
@ -1,9 +1,14 @@
|
|||||||
package cn.iocoder.yudao.framework.common.util.io;
|
package cn.iocoder.yudao.framework.common.util.io;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.FileTypeUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
|
import cn.hutool.core.io.file.FileNameUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,8 +63,20 @@ public class FileUtils {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
public static void main(String[] args) {
|
* @param content 文件内容
|
||||||
|
* @param originalName 原始文件名
|
||||||
|
* @return path,唯一不可重复
|
||||||
|
*/
|
||||||
|
public static String generatePath(byte[] content, String originalName) {
|
||||||
|
String sha256Hex = DigestUtil.sha256Hex(content);
|
||||||
|
// 如果存在name,则优先使用name的后缀
|
||||||
|
if (StrUtil.isNotBlank(originalName)) {
|
||||||
|
String extName = FileNameUtil.extName(originalName);
|
||||||
|
return StrUtil.isBlank(extName) ? sha256Hex : sha256Hex + "." + extName;
|
||||||
|
} else {
|
||||||
|
return sha256Hex + '.' + FileTypeUtil.getType(new ByteArrayInputStream(content));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public class FileTypeUtils {
|
|||||||
/**
|
/**
|
||||||
* 获得文件的 mineType,对于doc,jar等文件会有误差
|
* 获得文件的 mineType,对于doc,jar等文件会有误差
|
||||||
*
|
*
|
||||||
* @param data 包含文件开头几千个字节的字节数组
|
* @param data 文件内容
|
||||||
* @return mineType 无法识别时会返回“application/octet-stream”
|
* @return mineType 无法识别时会返回“application/octet-stream”
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@ -37,7 +37,7 @@ public class FileTypeUtils {
|
|||||||
/**
|
/**
|
||||||
* 在拥有文件和数据的情况下,最好使用此方法,最为准确
|
* 在拥有文件和数据的情况下,最好使用此方法,最为准确
|
||||||
*
|
*
|
||||||
* @param data 包含文件开头几千个字节的字节数组
|
* @param data 文件内容
|
||||||
* @param name 文件名
|
* @param name 文件名
|
||||||
* @return mineType 无法识别时会返回“application/octet-stream”
|
* @return mineType 无法识别时会返回“application/octet-stream”
|
||||||
*/
|
*/
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
package cn.iocoder.yudao.module.infra.service.file;
|
package cn.iocoder.yudao.module.infra.service.file;
|
||||||
|
|
||||||
import cn.hutool.core.io.FileTypeUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.file.FileNameUtil;
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.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.client.FileClient;
|
||||||
import cn.iocoder.yudao.framework.file.core.utils.FileTypeUtils;
|
import cn.iocoder.yudao.framework.file.core.utils.FileTypeUtils;
|
||||||
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
|
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
|
||||||
@ -15,7 +14,6 @@ import lombok.SneakyThrows;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
|
||||||
@ -45,14 +43,7 @@ public class FileServiceImpl implements FileService {
|
|||||||
// 计算默认的 path 名
|
// 计算默认的 path 名
|
||||||
String type = FileTypeUtils.getMineType(content, name);
|
String type = FileTypeUtils.getMineType(content, name);
|
||||||
if (StrUtil.isEmpty(path)) {
|
if (StrUtil.isEmpty(path)) {
|
||||||
String sha256Hex = DigestUtil.sha256Hex(content);
|
path = FileUtils.generatePath(content, name);
|
||||||
/* 如果存在name,则优先使用name的后缀 */
|
|
||||||
if (StrUtil.isNotBlank(name)) {
|
|
||||||
String extName = FileNameUtil.extName(name);
|
|
||||||
path = StrUtil.isBlank(extName) ? sha256Hex : sha256Hex + "." + extName;
|
|
||||||
} else {
|
|
||||||
path = sha256Hex + '.' + FileTypeUtil.getType(new ByteArrayInputStream(content), name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 如果 name 为空,则使用 path 填充
|
// 如果 name 为空,则使用 path 填充
|
||||||
if (StrUtil.isEmpty(name)) {
|
if (StrUtil.isEmpty(name)) {
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
:width="'100px'"></image-preview>
|
:width="'100px'"></image-preview>
|
||||||
<i v-else>无法预览,点击
|
<i v-else>无法预览,点击
|
||||||
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
||||||
:href="getFileUrl+scope.row.configId+'/get/' + scope.row.path">下载
|
:href="getFileUrl + scope.row.configId + '/get/' + scope.row.path">下载
|
||||||
</el-link>
|
</el-link>
|
||||||
</i>
|
</i>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user