feat: 文件解密创建临时文件截取文件名

This commit is contained in:
2024-08-27 11:16:03 +08:00
parent 8578c7ea3e
commit 3af5a74450
@@ -165,7 +165,6 @@ public class IntekeyUtils {
}
private static File transferToFile(MultipartFile multipartFile) {
// 选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
File file = null;
try {
String originalFilename = multipartFile.getOriginalFilename();
@@ -173,23 +172,38 @@ public class IntekeyUtils {
if (StrUtil.isNotBlank(originalFilename) && originalFilename.contains("%")) {
originalFilename = java.net.URLDecoder.decode(originalFilename, "UTF-8");
}
if (StrUtil.isBlank(originalFilename)) {
originalFilename = StrUtil.uuid();
}
log.info("originalFilename:" + originalFilename);
int index = originalFilename.lastIndexOf(".");
//String[] filename = originalFilename.split("\\.");
// 设置最大前缀和后缀长度
int maxPrefixLength = 10;
int maxSuffixLength = 5;
String prefix;
String suffix = null;
if (index != -1) {
file = File.createTempFile(originalFilename.substring(0, index), originalFilename.substring(index + 1));
prefix = originalFilename.substring(0, Math.min(index, maxPrefixLength));
suffix = originalFilename.substring(index, Math.min(originalFilename.length(), index + maxSuffixLength));
} else {
file = File.createTempFile(originalFilename, null);
prefix = originalFilename.substring(0, Math.min(originalFilename.length(), maxPrefixLength));
}
// 创建临时文件
file = File.createTempFile(prefix, suffix);
file.delete();
multipartFile.transferTo(file);
file.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
log.error("文件解密失败", e);
}
return file;
}
public static InputStream getInputStreamByDecryptFile(MultipartFile file) {
if (ENABLE) {
return decryptFile(DECRYPT_URL, DECRYPT_APP_CODE, DECRYPT_SECRET_KEY, null, file);