From 1060bdd00f1a6b96eb6fe1827f4276442b018456 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, 17 Oct 2019 10:59:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=E7=82=B9=EF=BC=9A?= =?UTF-8?q?=E6=94=AF=E6=8C=81base=20url=E9=85=8D=E7=BD=AE=EF=BC=88?= =?UTF-8?q?=E4=B8=BB=E8=A6=81=E7=94=A8=E4=BA=8Enginx=E5=8F=8D=E5=90=91?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E7=AD=89=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/conf/application.properties | 3 +++ .../java/cn/keking/config/ConfigConstants.java | 10 ++++++++++ .../keking/config/ConfigRefreshComponent.java | 7 +++++++ .../cn/keking/filters/ChinesePathFilter.java | 17 +++++++++++++---- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/jodconverter-web/src/main/conf/application.properties b/jodconverter-web/src/main/conf/application.properties index b7ed94e6..e850aeb0 100644 --- a/jodconverter-web/src/main/conf/application.properties +++ b/jodconverter-web/src/main/conf/application.properties @@ -31,6 +31,9 @@ spring.http.multipart.max-file-size=100MB cache.clean = true #######################################可在运行时动态配置####################################### +#提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置 +#base.url = https://file.keking.cn + #是否启用缓存 cache.enabled = true diff --git a/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java b/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java index 488189de..c292fb10 100644 --- a/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java +++ b/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java @@ -23,6 +23,7 @@ public class ConfigConstants { private static String ftpPassword; private static String ftpControlEncoding; private static String fileDir = OfficeUtils.getHomePath() + File.separator + "file" + File.separator; + private static String baseUrl; public static Boolean isCacheEnabled() { return cacheEnabled; @@ -92,6 +93,15 @@ public class ConfigConstants { return fileDir; } + public static String getBaseUrl() { + return baseUrl; + } + + public static void setBaseUrl(String baseUrl) { + // 不以'/'结尾的,加上'/' + ConfigConstants.baseUrl = baseUrl.concat("/"); + } + @Value("${file.dir:default}") public void setFileDir(String fileDir) { if (!"default".equals(fileDir)) { diff --git a/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java b/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java index 563a8cd9..163323a0 100644 --- a/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java +++ b/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java @@ -5,6 +5,7 @@ import org.artofsolving.jodconverter.office.OfficeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import javax.annotation.PostConstruct; import java.io.BufferedReader; @@ -29,6 +30,7 @@ public class ConfigRefreshComponent { public static final String DEFAULT_FTP_USERNAME = null; public static final String DEFAULT_FTP_PASSWORD = null; public static final String DEFAULT_FTP_CONTROL_ENCODING = "UTF-8"; + public static final String BASE_URL = null; @PostConstruct @@ -53,6 +55,7 @@ public class ConfigRefreshComponent { String ftpPassword; String ftpControlEncoding; String configFilePath = OfficeUtils.getCustomizedConfigPath(); + String baseUlr; while (true) { FileReader fileReader = new FileReader(configFilePath); BufferedReader bufferedReader = new BufferedReader(fileReader); @@ -67,6 +70,7 @@ public class ConfigRefreshComponent { ftpControlEncoding = properties.getProperty("ftp.control.encoding", DEFAULT_FTP_CONTROL_ENCODING); textArray = text.split(","); mediaArray = media.split(","); + baseUlr = properties.getProperty("base.url", null); ConfigConstants.setCacheEnabled(cacheEnabled); ConfigConstants.setSimText(textArray); ConfigConstants.setMedia(mediaArray); @@ -75,6 +79,9 @@ public class ConfigRefreshComponent { ConfigConstants.setFtpUsername(ftpUsername); ConfigConstants.setFtpPassword(ftpPassword); ConfigConstants.setFtpControlEncoding(ftpControlEncoding); + if (baseUlr != null && !StringUtils.isEmpty(baseUlr)) { + ConfigConstants.setBaseUrl(baseUlr); + } bufferedReader.close(); fileReader.close(); Thread.sleep(1000L); diff --git a/jodconverter-web/src/main/java/cn/keking/filters/ChinesePathFilter.java b/jodconverter-web/src/main/java/cn/keking/filters/ChinesePathFilter.java index cb241a36..695cab70 100644 --- a/jodconverter-web/src/main/java/cn/keking/filters/ChinesePathFilter.java +++ b/jodconverter-web/src/main/java/cn/keking/filters/ChinesePathFilter.java @@ -1,5 +1,8 @@ package cn.keking.filters; +import cn.keking.config.ConfigConstants; +import org.springframework.util.StringUtils; + import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @@ -19,10 +22,16 @@ public class ChinesePathFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); - StringBuilder pathBuilder = new StringBuilder(); - pathBuilder.append(request.getScheme()).append("://").append(request.getServerName()).append(":") - .append(request.getServerPort()).append(((HttpServletRequest)request).getContextPath()).append("/"); - request.setAttribute("baseUrl", pathBuilder.toString()); + String baseUrl; + if (ConfigConstants.getBaseUrl() != null) { + baseUrl = ConfigConstants.getBaseUrl(); + } else { + StringBuilder pathBuilder = new StringBuilder(); + pathBuilder.append(request.getScheme()).append("://").append(request.getServerName()).append(":") + .append(request.getServerPort()).append(((HttpServletRequest) request).getContextPath()).append("/"); + baseUrl = pathBuilder.toString(); + } + request.setAttribute("baseUrl", baseUrl); chain.doFilter(request, response); }