From 29723c0c6658effce1419aadc01354853965ec6d Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期三, 08 一月 2025 11:17:21 +0800 Subject: [PATCH] [add]h5读取改造 --- src/main/java/com/se/simu/service/Impl/SemFilesSimuServiceImpl.java | 47 ++++++++++----- pom.xml | 10 ++- src/main/java/com/se/simu/utils/ZipUtils.java | 71 +++++++++++++++++++++++ 3 files changed, 109 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index 0791dc5..3f2fceb 100644 --- a/pom.xml +++ b/pom.xml @@ -167,7 +167,6 @@ <scope>compile</scope> </dependency> - <!--webclient璇锋眰--> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-webflux --> <dependency> @@ -215,10 +214,13 @@ <artifactId>commons-fileupload</artifactId> <version>1.5</version> </dependency> - - </dependencies> - + <repositories> + <repository> + <id>jcenter</id> + <url>https://jcenter.bintray.com/</url> + </repository> + </repositories> <build> <finalName>SimuServer</finalName> <plugins> diff --git a/src/main/java/com/se/simu/service/Impl/SemFilesSimuServiceImpl.java b/src/main/java/com/se/simu/service/Impl/SemFilesSimuServiceImpl.java index 264693b..47c4014 100644 --- a/src/main/java/com/se/simu/service/Impl/SemFilesSimuServiceImpl.java +++ b/src/main/java/com/se/simu/service/Impl/SemFilesSimuServiceImpl.java @@ -4,22 +4,30 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.se.simu.service.SemFilesSimuService; +import com.se.simu.utils.ZipUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.sql.*; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.HashMap; @Slf4j @Service public class SemFilesSimuServiceImpl implements SemFilesSimuService { + @Value("${config.outPath}") + private String outPath; /** * 鑾峰彇 INTRODUCE @@ -69,12 +77,9 @@ Connection connection = connectToSQLiteWithCopy(filePath); System.out.println("SQLite鏁版嵁搴撹繛鎺ユ垚鍔燂紒"); Statement stmt = connection.createStatement(); - - // 鏌ヨENTITY琛ㄧ殑鏁版嵁骞惰繑鍥濲SON鏍煎紡鐨勭粨鏋� // result = queryEntityTable(stmt); result = queryDynamizersTable(stmt); - // 鍏抽棴杩炴帴 connection.close(); return result; @@ -222,7 +227,7 @@ * @return JSON鏍煎紡鐨勬煡璇㈢粨鏋� * @throws SQLException 濡傛灉鏌ヨ杩囩▼涓彂鐢熼敊璇� */ - public static JSONObject queryDynamizersTable(Statement stmt) throws SQLException { + public JSONObject queryDynamizersTable(Statement stmt) throws SQLException { // 鏋勫缓SQL鏌ヨ璇彞 String querySql = "SELECT URL, GMLID, DATA FROM DYNAMIZERS"; // 鍒涘缓涓�涓� JSON 瀵硅薄鐢ㄤ簬瀛樺偍缁撴灉 @@ -237,17 +242,29 @@ jsonObject.put("URL", rs.getString("URL")); jsonObject.put("GMLID", rs.getString("GMLID")); // 鑾峰彇 BLOB 鏁版嵁骞跺皢鍏惰浆鎹负 Base64 缂栫爜瀛楃涓� - String blobData = rs.getString("DATA"); -// System.out.println("blobData = " + blobData); - /* if (blobData != null) { - // 灏� BLOB 鏁版嵁杞崲涓哄瓧鑺傛暟缁� - byte[] blobBytes = blobData.getBytes(1, (int) blobData.length()); - // 灏嗗瓧鑺傛暟缁勮浆鎹负 Base64 瀛楃涓� - String base64Data = Base64.getEncoder().encodeToString(blobBytes); - // 灏� Base64 瀛楃涓叉斁鍏� JSON 瀵硅薄 - jsonObject.put("DATA", base64Data); - }*/ - // 灏嗘瘡涓�琛岀殑缁撴灉娣诲姞鍒� JSON 鏁扮粍涓� + byte[] blobData = rs.getBytes("DATA"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + String dirpath = outPath + "\\" + formatter.format(LocalDateTime.now()); + String filepath = outPath + "\\" + formatter.format(LocalDateTime.now()) + "\\" + rs.getString("URL"); + try { + File file = new File(dirpath); + if (!file.exists()) { + file.mkdirs(); + } + File resultFile = new File(filepath); + resultFile.createNewFile(); + try (FileOutputStream fos = new FileOutputStream(filepath)) { + fos.write(blobData); + ZipUtils.unzip(filepath,dirpath); + System.out.println("Bytes written to file successfully."); + resultFile.delete(); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + jsonObject.put("DATA", filepath); jsonArray.add(jsonObject); } // 灏嗘煡璇㈢粨鏋滄斁鍏ユ渶缁堢殑 JSON 瀵硅薄涓� diff --git a/src/main/java/com/se/simu/utils/ZipUtils.java b/src/main/java/com/se/simu/utils/ZipUtils.java new file mode 100644 index 0000000..e855e73 --- /dev/null +++ b/src/main/java/com/se/simu/utils/ZipUtils.java @@ -0,0 +1,71 @@ +package com.se.simu.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.ZipUtil; +import org.apache.commons.io.FileUtils; + +import java.io.*; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; + +/** + * zip + */ +public class ZipUtils { + // 瑙e帇zip鏍煎紡 + public static void unzip(String zipFilePath, String destDir){ + //鎵�鏈夌殑鏂囦欢璺緞 + List<String> filePaths = new ArrayList<>(); + + File destDirectory = new File(destDir); + if (!destDirectory.exists()) { + if (!destDirectory.mkdirs()) { + } + } + try (ZipFile zipFile = new ZipFile(zipFilePath)) { + Enumeration<? extends ZipEntry> entries = zipFile.entries(); + + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + String filePath = destDir + File.separator + entry.getName(); + // 纭繚鐩爣鏂囦欢璺緞鐨勭埗鐩綍瀛樺湪 + File entryDestination = new File(filePath); + File parentDirectory = entryDestination.getParentFile(); + if (parentDirectory != null && !parentDirectory.exists()) { + parentDirectory.mkdirs(); + } + if (!entry.isDirectory()) { + // 鎻愬彇鏂囦欢 + try (InputStream is = zipFile.getInputStream(entry); + BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))) { + byte[] bytesIn = new byte[4096]; + int read; + while ((read = is.read(bytesIn)) != -1) { + bos.write(bytesIn, 0, read); + } + } + // 鎵撳嵃鏂囦欢璺緞 + filePaths.add(filePath); + } else { + // 濡傛灉鏄洰褰曪紝鍒欏垱寤虹洰褰曪紙娉ㄦ剰锛氬湪涓婇潰鐨刴kdirs璋冪敤涓凡缁忓鐞嗕簡锛� + // 杩欓噷涔熷彲浠ラ�夋嫨鎵撳嵃鐩綍璺緞 + } + } + } catch (IOException e) { + e.printStackTrace(); + try { + File file = ZipUtil.unzip(zipFilePath, destDir, CharsetUtil.CHARSET_GBK); + File[] file1 = file.listFiles(); + for (int i = 0; i < file1.length; i++) { + filePaths.add(file1[i].getAbsolutePath()); + } + } catch (Exception ex) { + e.printStackTrace(); + } + } + } +} -- Gitblit v1.9.3