ソースを参照

修复:addTask异常

陈精华 5 年 前
コミット
e0b1cd76ca

+ 1 - 1
jodconverter-web/src/main/java/cn/keking/service/FileConverQueueTask.java

@@ -62,7 +62,7 @@ public class FileConverQueueTask {
                         FileAttribute fileAttribute = fileUtils.getFileAttribute(url);
                         logger.info("正在处理转换任务,文件名称【{}】",fileAttribute.getName());
                         FileType fileType=fileAttribute.getType();
-                        if(fileType.equals(FileType.compress) || fileType.equals(FileType.office)){
+                        if(fileType.equals(FileType.compress) || fileType.equals(FileType.office) || fileType.equals(FileType.cad)){
                             FilePreview filePreview=previewFactory.get(fileAttribute);
                             filePreview.filePreviewHandle(url, new ExtendedModelMap(), fileAttribute);
                         }

+ 2 - 2
jodconverter-web/src/main/java/cn/keking/service/impl/CadFilePreviewImpl.java

@@ -8,11 +8,11 @@ import cn.keking.utils.CadToPdf;
 import cn.keking.utils.DownloadUtils;
 import cn.keking.utils.FileUtils;
 import cn.keking.utils.PdfUtils;
+import cn.keking.web.filter.ChinesePathFilter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
 import org.springframework.util.StringUtils;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import java.util.List;
 
@@ -45,7 +45,7 @@ public class CadFilePreviewImpl implements FilePreview {
     public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
         // 预览Type,参数传了就取参数的,没传取系统默认
         String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
-        String baseUrl = (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl = ChinesePathFilter.getBaseUrl();
         String suffix=fileAttribute.getSuffix();
         String fileName=fileAttribute.getName();
         String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";

+ 2 - 2
jodconverter-web/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java

@@ -8,11 +8,11 @@ import cn.keking.utils.DownloadUtils;
 import cn.keking.utils.FileUtils;
 import cn.keking.utils.OfficeToPdf;
 import cn.keking.utils.PdfUtils;
+import cn.keking.web.filter.ChinesePathFilter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
 import org.springframework.util.StringUtils;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import java.util.List;
 
@@ -45,7 +45,7 @@ public class OfficeFilePreviewImpl implements FilePreview {
     public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
         // 预览Type,参数传了就取参数的,没传取系统默认
         String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
-        String baseUrl = (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl = ChinesePathFilter.getBaseUrl();
         String suffix=fileAttribute.getSuffix();
         String fileName=fileAttribute.getName();
         boolean isHtml = suffix.equalsIgnoreCase("xls") || suffix.equalsIgnoreCase("xlsx");

+ 2 - 2
jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java

@@ -7,10 +7,10 @@ import cn.keking.service.FilePreview;
 import cn.keking.utils.DownloadUtils;
 import cn.keking.utils.FileUtils;
 import cn.keking.utils.PdfUtils;
+import cn.keking.web.filter.ChinesePathFilter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import java.util.List;
 
@@ -38,7 +38,7 @@ public class PdfFilePreviewImpl implements FilePreview{
         String suffix=fileAttribute.getSuffix();
         String fileName=fileAttribute.getName();
         String officePreviewType = model.asMap().get("officePreviewType") == null ? ConfigConstants.getOfficePreviewType() : model.asMap().get("officePreviewType").toString();
-        String baseUrl = (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl = ChinesePathFilter.getBaseUrl();
         model.addAttribute("pdfUrl", url);
         String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + "pdf";
         String outFilePath = fileDir + pdfName;

+ 1 - 1
jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java

@@ -23,7 +23,7 @@ public class PictureFilePreviewImpl implements FilePreview {
 
     @Override
     public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) {
-        String fileKey=(String) RequestContextHolder.currentRequestAttributes().getAttribute("fileKey",0);
+        String fileKey = (String) RequestContextHolder.currentRequestAttributes().getAttribute("fileKey",0);
         List imgUrls = Lists.newArrayList(url);
         try{
             imgUrls.clear();

+ 4 - 4
jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java

@@ -2,6 +2,7 @@ package cn.keking.utils;
 
 import cn.keking.config.ConfigConstants;
 import cn.keking.model.FileType;
+import cn.keking.web.filter.ChinesePathFilter;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.junrar.Archive;
@@ -15,7 +16,6 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipFile;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import java.io.*;
 import java.math.BigDecimal;
@@ -62,7 +62,7 @@ public class ZipReader {
         String archiveSeparator = "/";
         Map<String, FileNode> appender = Maps.newHashMap();
         List imgUrls=Lists.newArrayList();
-        String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl = ChinesePathFilter.getBaseUrl();
         String archiveFileName = fileUtils.getFileNameFromPath(filePath);
         try {
             ZipFile zipFile = new ZipFile(filePath, fileUtils.getFileEncodeUTFGBK(filePath));
@@ -120,7 +120,7 @@ public class ZipReader {
     public String unRar(String filePath,String fileKey){
         Map<String, FileNode> appender = Maps.newHashMap();
         List imgUrls=Lists.newArrayList();
-        String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl = ChinesePathFilter.getBaseUrl();
         try {
             Archive archive = new Archive(new FileInputStream(new File(filePath)));
             List<FileHeader> headers = archive.getFileHeaders();
@@ -172,7 +172,7 @@ public class ZipReader {
         String archiveSeparator = "/";
         Map<String, FileNode> appender = Maps.newHashMap();
         List imgUrls=Lists.newArrayList();
-        String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        String baseUrl= ChinesePathFilter.getBaseUrl();
         String archiveFileName = fileUtils.getFileNameFromPath(filePath);
         try {
             SevenZFile zipFile = new SevenZFile(new File(filePath));

+ 14 - 0
jodconverter-web/src/main/java/cn/keking/web/filter/ChinesePathFilter.java

@@ -1,6 +1,7 @@
 package cn.keking.web.filter;
 
 import cn.keking.config.ConfigConstants;
+import org.springframework.web.context.request.RequestContextHolder;
 
 import javax.servlet.*;
 import javax.servlet.http.HttpServletRequest;
@@ -17,6 +18,18 @@ public class ChinesePathFilter implements Filter {
     public void init(FilterConfig filterConfig) throws ServletException {
     }
 
+    private static String BASE_URL;
+
+    public static String getBaseUrl() {
+        String baseUrl;
+        try {
+            baseUrl = (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
+        } catch (Exception e) {
+            baseUrl = BASE_URL;
+        }
+        return baseUrl;
+    }
+
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
         request.setCharacterEncoding("UTF-8");
@@ -36,6 +49,7 @@ public class ChinesePathFilter implements Filter {
         } else {
             baseUrl = localBaseUrl;
         }
+        BASE_URL = baseUrl;
         request.setAttribute("baseUrl", baseUrl);
         request.setAttribute("localBaseUrl", localBaseUrl);
         chain.doFilter(request, response);