Bladeren bron

解压相关

陈精华 6 jaren geleden
bovenliggende
commit
7e8de7c754

+ 1 - 1
jodconverter-web/pom.xml

@@ -112,7 +112,7 @@
         <dependency>
             <groupId>com.github.junrar</groupId>
             <artifactId>junrar</artifactId>
-            <version>1.0.1</version>
+            <version>4.0.0</version>
         </dependency>
         <dependency>
             <groupId>net.sourceforge.jchardet</groupId>

+ 6 - 2
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<String> 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";
         }

+ 3 - 3
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<FileHeader> headers = archive.getFileHeaders();
             headers = sortedHeaders(headers);
             String archiveFileName = fileUtils.getFileNameFromPath(filePath);
@@ -176,10 +176,10 @@ public class ZipReader {
     private List<FileHeader> sortedHeaders(List<FileHeader> headers) {
         List<FileHeader> sortedHeaders = new ArrayList<>();
         Map<Integer, FileHeader> 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<Integer, FileHeader> 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);
                 }
             }