From e0b1cd76cab255f4459eba7f351b2721555fa05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=B2=BE=E5=8D=8E?= <842761733@qq.com> Date: Tue, 14 Apr 2020 11:17:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AaddTask=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/keking/service/FileConverQueueTask.java | 2 +- .../cn/keking/service/impl/CadFilePreviewImpl.java | 4 ++-- .../keking/service/impl/OfficeFilePreviewImpl.java | 4 ++-- .../cn/keking/service/impl/PdfFilePreviewImpl.java | 4 ++-- .../service/impl/PictureFilePreviewImpl.java | 2 +- .../src/main/java/cn/keking/utils/ZipReader.java | 8 ++++---- .../cn/keking/web/filter/ChinesePathFilter.java | 14 ++++++++++++++ 7 files changed, 26 insertions(+), 12 deletions(-) diff --git a/jodconverter-web/src/main/java/cn/keking/service/FileConverQueueTask.java b/jodconverter-web/src/main/java/cn/keking/service/FileConverQueueTask.java index a0644d2a..255c3aa8 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/FileConverQueueTask.java +++ b/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); } diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/CadFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/CadFilePreviewImpl.java index b00a7c34..7a11ed38 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/CadFilePreviewImpl.java +++ b/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"; diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java index c0b255ab..e930b814 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java +++ b/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"); diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java index c173e147..237fb053 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java +++ b/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; diff --git a/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java b/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java index 3e649eaf..c0353e0d 100644 --- a/jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java +++ b/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(); 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 9dc78b98..96d57499 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java +++ b/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 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 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 headers = archive.getFileHeaders(); @@ -172,7 +172,7 @@ public class ZipReader { String archiveSeparator = "/"; Map 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)); diff --git a/jodconverter-web/src/main/java/cn/keking/web/filter/ChinesePathFilter.java b/jodconverter-web/src/main/java/cn/keking/web/filter/ChinesePathFilter.java index 23af3593..c5338eb1 100644 --- a/jodconverter-web/src/main/java/cn/keking/web/filter/ChinesePathFilter.java +++ b/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);