Przeglądaj źródła

【CHG】导出DXF文件时图片加载不完整

ZhaoMn 4 lat temu
rodzic
commit
74ac440be8

+ 8 - 0
pom.xml

@@ -52,6 +52,7 @@
     <protobuf.version>3.19.1</protobuf.version>
     <log4j.version>2.15.0</log4j.version>
     <maven-plugin.version>2.6.1</maven-plugin.version>
+    <guava.version>30.0-jre</guava.version>
   </properties>
 
   <!-- 依赖声明 -->
@@ -203,6 +204,13 @@
         <version>${lombok.version}</version>
       </dependency>
 
+      <!-- guava -->
+      <dependency>
+        <groupId>com.google.guava</groupId>
+        <artifactId>guava</artifactId>
+        <version>${guava.version}</version>
+      </dependency>
+
       <!-- 打包插件 -->
       <dependency>
         <groupId>org.springframework.boot</groupId>

+ 3 - 10
railway-admin/src/main/java/com/railway/web/controller/business/catenary/BusJcbFdfxjyqController.java

@@ -14,7 +14,6 @@ import com.railway.common.utils.poi.WordUtils;
 import com.railway.system.service.ISysFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import java.io.InputStream;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -179,15 +178,9 @@ public class BusJcbFdfxjyqController extends BaseController {
     header.put("width", 450);
     header.put("height", 110);
     header.put("type", "jpg");
-    InputStream inputStream = HttpUtils.sendGetStream(info.getPicUrl());
-    log.info("inputStream - {}", inputStream);
-    //解决网络传输造成流读取不全问题
-    Thread.sleep(200);
-    if (null != inputStream) {
-      byte[] byteArray = WordUtils.inputStream2ByteArray(inputStream, true);
-      log.info("byteArray.length - {}", byteArray.length);
-      header.put("content", byteArray);
-    }
+    byte[] byteArray = HttpUtils.sendGetStream(info.getPicUrl());
+    log.info("byteArray.length - {}", byteArray.length);
+    header.put("content", byteArray);
     log.info("header.size() - {}", header.size());
     params.put("${header}", header);
 

+ 5 - 0
railway-common/pom.xml

@@ -142,6 +142,11 @@
       <artifactId>swagger-annotations</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+
   </dependencies>
 
 </project>

+ 31 - 2
railway-common/src/main/java/com/railway/common/utils/http/HttpUtils.java

@@ -1,5 +1,6 @@
 package com.railway.common.utils.http;
 
+import com.google.common.primitives.Bytes;
 import com.railway.common.constant.Constants;
 import com.railway.common.utils.StringUtils;
 import java.io.BufferedReader;
@@ -14,6 +15,8 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
@@ -85,8 +88,12 @@ public class HttpUtils {
    * @param url 发送请求的 URL
    * @return 所代表远程资源的响应结果
    */
-  public static InputStream sendGetStream(String url) {
-    return sendGetStream(url, null);
+  public static byte [] sendGetStream(String url) {
+    InputStream in = sendGetStream(url, null);
+    if(null == in){
+      return new byte[0];
+    }
+    return inputStream2ByteArray(in);
   }
   /**
    * 向指定 URL 发送GET方法的请求
@@ -243,6 +250,28 @@ public class HttpUtils {
     return result.toString();
   }
 
+  /**
+   * 将输入流中的数据写入字节数组
+   */
+  public static byte[] inputStream2ByteArray(InputStream in) {
+    List<Byte> byteList = new ArrayList<>();
+    byte[] bytes = new byte[2048];
+    try {
+      while (in.read(bytes) != -1) {
+        byteList.addAll(Bytes.asList(bytes));
+      }
+    }catch (IOException e) {
+      e.printStackTrace();
+    } finally {
+      try {
+        in.close();
+      } catch (Exception e2) {
+        e2.getStackTrace();
+      }
+    }
+    return Bytes.toArray(byteList);
+  }
+
   private static class TrustAnyTrustManager implements X509TrustManager {
 
     @Override

+ 0 - 1
railway-common/src/main/java/com/railway/common/utils/poi/WordUtils.java

@@ -276,7 +276,6 @@ public class WordUtils {
     return byteArray;
   }
 
-
   /**
    * 关闭输入流
    */