From 3f40b60c643396f75bc9835aa8a6e380dfb811d2 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, 16 May 2019 17:44:34 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=817z=E6=96=87=E4=BB=B6=E9=A2=84?=
=?UTF-8?q?=E8=A7=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jodconverter-web/pom.xml | 6 +
.../service/impl/CompressFilePreviewImpl.java | 2 +
.../main/java/cn/keking/utils/ZipReader.java | 121 ++++++++++++++++++
3 files changed, 129 insertions(+)
diff --git a/jodconverter-web/pom.xml b/jodconverter-web/pom.xml
index 86e1e8a0..86968b1b 100644
--- a/jodconverter-web/pom.xml
+++ b/jodconverter-web/pom.xml
@@ -114,6 +114,12 @@
junrar
4.0.0
+
+
+ org.tukaani
+ xz
+ 1.8
+
net.sourceforge.jchardet
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 fdca2540..1a7f7033 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
@@ -47,6 +47,8 @@ public class CompressFilePreviewImpl implements FilePreview{
fileTree = zipReader.readZipFile(filePath, fileName);
} else if ("rar".equalsIgnoreCase(suffix)) {
fileTree = zipReader.unRar(filePath, fileName);
+ } else if ("7z".equalsIgnoreCase(suffix)) {
+ fileTree = zipReader.read7zFile(filePath, fileName);
}
if (fileTree != null && !"null".equals(fileTree)) {
fileUtils.addConvertedFile(fileName, fileTree);
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 7eef140a..9dc78b98 100644
--- a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java
+++ b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java
@@ -9,6 +9,8 @@ import com.github.junrar.exception.RarException;
import com.github.junrar.rarfile.FileHeader;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
+import org.apache.commons.compress.archivers.sevenz.SevenZFile;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.springframework.beans.factory.annotation.Autowired;
@@ -160,6 +162,71 @@ public class ZipReader {
return null;
}
+ /**
+ * 解压7z文件
+ * @param filePath
+ * @param fileKey
+ * @return
+ */
+ public String read7zFile(String filePath,String fileKey) {
+ String archiveSeparator = "/";
+ Map appender = Maps.newHashMap();
+ List imgUrls=Lists.newArrayList();
+ String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+ String archiveFileName = fileUtils.getFileNameFromPath(filePath);
+ try {
+ SevenZFile zipFile = new SevenZFile(new File(filePath));
+ Iterable entries = zipFile.getEntries();
+ // 排序
+ Enumeration newEntries = sortSevenZEntries(entries);
+ List