From 3098077f063ab3a29b0adbb674aaa82f87987fa2 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 12 Dec 2025 10:09:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=9B=BE=E7=89=87=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=97=B6=E7=9A=84bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zhgd/xmgl/util/Base64Util.java | 11 ++++- .../com/zhgd/xmgl/util/Base64UtilTest.java | 36 ++++++++++++++ .../com/zhgd/xmgl/util/TestResourceUtils.java | 44 ++++++++++++++++++ src/test/resources/images/test.jpg | Bin 0 -> 655 bytes 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/zhgd/xmgl/util/Base64UtilTest.java create mode 100644 src/test/java/com/zhgd/xmgl/util/TestResourceUtils.java create mode 100644 src/test/resources/images/test.jpg diff --git a/src/main/java/com/zhgd/xmgl/util/Base64Util.java b/src/main/java/com/zhgd/xmgl/util/Base64Util.java index cc6759398..cf719be50 100644 --- a/src/main/java/com/zhgd/xmgl/util/Base64Util.java +++ b/src/main/java/com/zhgd/xmgl/util/Base64Util.java @@ -1,6 +1,7 @@ package com.zhgd.xmgl.util; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IORuntimeException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; @@ -72,8 +73,14 @@ public class Base64Util { * @param imgPath */ public static String convertFileToBase64(String imgPath) { - byte[] fileBytes = FileUtil.readBytes(imgPath); - return Base64.encodeBase64String(fileBytes); + try { + byte[] fileBytes = FileUtil.readBytes(imgPath); + return Base64.encodeBase64String(fileBytes); + } catch (IORuntimeException e) { + log.debug("",e); + log.error("本地文件(图片、excel等)转换成Base64字符串错误:{}",e.getMessage()); + } + return null; } /** diff --git a/src/test/java/com/zhgd/xmgl/util/Base64UtilTest.java b/src/test/java/com/zhgd/xmgl/util/Base64UtilTest.java new file mode 100644 index 000000000..e4e6a8b74 --- /dev/null +++ b/src/test/java/com/zhgd/xmgl/util/Base64UtilTest.java @@ -0,0 +1,36 @@ +package com.zhgd.xmgl.util; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mockStatic; + +@ExtendWith(MockitoExtension.class) +class Base64UtilTest { + + @Test + void convertFileToBase64_Success() { + String imgPath = TestResourceUtils.getTestImgPath(); + + // 执行测试 + String result = Base64Util.convertFileToBase64(imgPath); + + // 验证结果 + assertNotNull(result); + } + + + @Test + void convertFileToBase64_FileReadError() { + String imgPath = "不存在.jpg"; + + // 执行测试 + String result = Base64Util.convertFileToBase64(imgPath); + + // 验证结果 + assertNull(result); + } +} diff --git a/src/test/java/com/zhgd/xmgl/util/TestResourceUtils.java b/src/test/java/com/zhgd/xmgl/util/TestResourceUtils.java new file mode 100644 index 000000000..562582134 --- /dev/null +++ b/src/test/java/com/zhgd/xmgl/util/TestResourceUtils.java @@ -0,0 +1,44 @@ +package com.zhgd.xmgl.util; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLDecoder; +import java.nio.file.Paths; + +public class TestResourceUtils { + /** + * 获取测试图片路径 + * + * @return + */ + @NotNull + public static String getTestImgPath() { + // 从 classpath 获取测试文件路径 + ClassLoader classLoader = TestResourceUtils.class.getClassLoader(); + URL resourceUrl = classLoader.getResource("images/test.jpg"); + + if (resourceUrl == null) { + throw new RuntimeException("测试图片文件未找到: images/test.jpg"); + } + + try { + // 使用 URI 方式处理 URL 编码(如 %20) + URI uri = resourceUrl.toURI(); + return Paths.get(uri).toAbsolutePath().toString(); + } catch (URISyntaxException e) { + // 回退方案:使用 URLDecoder 解码 + try { + String decodedPath = URLDecoder.decode(resourceUrl.getFile(), "UTF-8"); + return new File(decodedPath).getAbsolutePath(); + } catch (UnsupportedEncodingException e2) { + throw new RuntimeException("路径解码失败", e2); + } + } + } + +} diff --git a/src/test/resources/images/test.jpg b/src/test/resources/images/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df8626e1831c20e3ed9c544e193ef575599c384c GIT binary patch literal 655 zcmex=42X5EGFQ z5)l;v8N$d6)WgEc$;!$p!pqGoLNfS&fI*OhfsuicnNf*>Nsy6Qkn#T!26+YsMpmF7 zK;D1?Mkb&e+1NQaxwwG}whAyXF)}kVu`q*N4OCqVlxJWOWEE00bYv3_Ok`Io6ftU? zxR68HY2!iBpoX!XqN1 zl2cOC(lau%ic3n%$}1|Xnp;}i+B-VCCQY6)b=ve9GiNPYykzOJeA&aSFc^aar4&0M~|O8efIpt%U2&ieg5+G+xH(oe}VkP$iNKo z7TjlO{t^WGi;0DWnS~wXFGi+vAZ8Y1VO2C_6LJh>Pb?HxGHT=yahkYr<3UbkKb$@|Xn~>={x;0^_fxe@Og)696%0 B&6EHD literal 0 HcmV?d00001