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);
}
}