From 7e8de7c75445eb3077c1a7cbc8ec707c1e37f499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=B2=BE=E5=8D=8E?= <842761733@qq.com> Date: Thu, 18 Apr 2019 14:20:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=8E=8B=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jodconverter-web/pom.xml | 2 +- .../cn/keking/service/impl/CompressFilePreviewImpl.java | 8 ++++++-- .../src/main/java/cn/keking/utils/ZipReader.java | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/jodconverter-web/pom.xml b/jodconverter-web/pom.xml index fe1e4b85..a131dc29 100644 --- a/jodconverter-web/pom.xml +++ b/jodconverter-web/pom.xml @@ -112,7 +112,7 @@ com.github.junrar junrar - 1.0.1 + 4.0.0 net.sourceforge.jchardet diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java index 347520cf..fdca2540 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java +++ b/jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java @@ -38,6 +38,7 @@ public class CompressFilePreviewImpl implements FilePreview{ if (!StringUtils.hasText(fileUtils.getConvertedFile(fileName))) { ReturnResponse response = downloadUtils.downLoad(decodedUrl, suffix, fileName); if (0 != response.getCode()) { + model.addAttribute("fileType", suffix); model.addAttribute("msg", response.getMsg()); return "fileNotSupported"; } @@ -47,14 +48,17 @@ public class CompressFilePreviewImpl implements FilePreview{ } else if ("rar".equalsIgnoreCase(suffix)) { fileTree = zipReader.unRar(filePath, fileName); } - fileUtils.addConvertedFile(fileName, fileTree); + if (fileTree != null && !"null".equals(fileTree)) { + fileUtils.addConvertedFile(fileName, fileTree); + } } else { fileTree = fileUtils.getConvertedFile(fileName); } - if (null != fileTree) { + if (fileTree != null && !"null".equals(fileTree)) { model.addAttribute("fileTree", fileTree); return "compress"; } else { + model.addAttribute("fileType", suffix); model.addAttribute("msg", "压缩文件类型不受支持,尝试在压缩的时候选择RAR4格式"); return "fileNotSupported"; } diff --git a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java index 048fb67d..7eef140a 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java @@ -120,7 +120,7 @@ public class ZipReader { List imgUrls=Lists.newArrayList(); String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0); try { - Archive archive = new Archive(new File(filePath)); + Archive archive = new Archive(new FileInputStream(new File(filePath))); List headers = archive.getFileHeaders(); headers = sortedHeaders(headers); String archiveFileName = fileUtils.getFileNameFromPath(filePath); @@ -176,10 +176,10 @@ public class ZipReader { private List sortedHeaders(List headers) { List sortedHeaders = new ArrayList<>(); Map mapHeaders = new TreeMap<>(); - headers.forEach(header -> mapHeaders.put(header.getFileNameW().length(), header)); + headers.forEach(header -> mapHeaders.put(new Integer(0).equals(header.getFileNameW().length()) ? header.getFileNameString().length() : header.getFileNameW().length(), header)); for (Map.Entry entry : mapHeaders.entrySet()){ for (FileHeader header : headers) { - if (entry.getKey().intValue() == header.getFileNameW().length()) { + if (entry.getKey().equals(new Integer(0).equals(header.getFileNameW().length()) ? header.getFileNameString().length() : header.getFileNameW().length())) { sortedHeaders.add(header); } }