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