From 66f7e9045df3aa0808870ae2a8522f1cf1da0ef4 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 21 一月 2025 17:36:45 +0800
Subject: [PATCH] 文件下载bug

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UrlDownloader.java |   16 +++++++++++++---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java  |    3 +--
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java  |    8 ++++++++
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UrlDownloader.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UrlDownloader.java
index 9b7a776..19fb32c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UrlDownloader.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UrlDownloader.java
@@ -2,8 +2,10 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLEncoder;
 
 public class UrlDownloader {
 
@@ -29,9 +31,17 @@
         return connection.getInputStream();
     }
 
-    public static void main(String[] args) {
-        String urlString = "https://example.com/file.txt"; // 替换为你要下载的URL
-
+    public static void main(String[] args) throws UnsupportedEncodingException {
+        String urlString = "http://192.168.110.188:9300/statics/2025/01/21/身份证人像面_20250121171827A014.png"; // 替换为你要下载的URL
+        //将路径中的中文进行编码
+        //String urlString = "http://192.168.110.188:9300/statics/2025/01/21/%E8%BA%AB%E4%BB%BD%E8%AF%81%E4%BA%BA%E5%83%8F%E9%9D%A2_20250121171827A014.png";
+        // 找到最后一个斜杠的位置
+        int lastSlashIndex = urlString.lastIndexOf("/");
+        // 从斜杠后提取文件名
+        String baseUrl = urlString.substring(0, lastSlashIndex);
+        String fileName = urlString.substring(lastSlashIndex + 1);
+        String encode = URLEncoder.encode(fileName, "UTF-8");
+        urlString = baseUrl + "/" + encode;
         try (InputStream inputStream = downloadAsStream(urlString)) {
             // 这里你可以处理输入流,例如将其写入文件或进行其他操作
             byte[] buffer = new byte[1024];
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
index 6e0d145..a714604 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
@@ -11,7 +11,6 @@
 import com.ruoyi.common.core.utils.UrlDownloader;
 
 import java.io.InputStream;
-import java.util.Map;
 
 public class OcrUtils {
 
@@ -57,7 +56,7 @@
             }
             JSONObject body = jsonObject.getJSONObject("body");
             JSONObject data = body.getJSONObject("Data");
-            JSONArray subImages = body.getJSONArray("SubImages");
+            JSONArray subImages = data.getJSONArray("SubImages");
             if (subImages != null && !subImages.isEmpty()){
                 JSONObject subImage = subImages.getJSONObject(0);
                 JSONObject kvInfo = subImage.getJSONObject("KvInfo");
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
index 2efdc40..6353cd7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
@@ -13,6 +13,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.io.InputStream;
+import java.net.URLEncoder;
 
 @RestController
 @RequestMapping("/common")
@@ -27,6 +28,13 @@
     public R<IdCard> idCard(@Parameter(name = "url", description = "图片地址") String url) {
         InputStream inputStream;
         try {
+            // 找到最后一个斜杠的位置
+            int lastSlashIndex = url.lastIndexOf("/");
+            // 从斜杠后提取文件名
+            String baseUrl = url.substring(0, lastSlashIndex);
+            String fileName = url.substring(lastSlashIndex + 1);
+            String encode = URLEncoder.encode(fileName, "UTF-8");
+            url = baseUrl + "/" + encode;
             inputStream = UrlDownloader.downloadAsStream(url);
             JSONObject jsonObject = OcrUtils.idCard(inputStream);
             IdCard idCard = JSONObject.parseObject(jsonObject.toJSONString(), IdCard.class);

--
Gitblit v1.7.1