diff --git a/jodconverter-web/pom.xml b/jodconverter-web/pom.xml index 7dfc2ff4..3fed531b 100644 --- a/jodconverter-web/pom.xml +++ b/jodconverter-web/pom.xml @@ -164,9 +164,6 @@ true - - src/main/conf - diff --git a/jodconverter-web/src/main/bin/startup.bat b/jodconverter-web/src/main/bin/startup.bat index 1a4e5f79..a36b0519 100644 --- a/jodconverter-web/src/main/bin/startup.bat +++ b/jodconverter-web/src/main/bin/startup.bat @@ -1 +1 @@ -java -jar jodconverter-web-1.5.8.RELEASE.jar -> ..\\log\\kkFileView.log \ No newline at end of file +java -Dspring.config.location=..\conf\application.properties -jar jodconverter-web-1.5.8.RELEASE.jar -> ..\log\kkFileView.log \ No newline at end of file diff --git a/jodconverter-web/src/main/bin/startup.sh b/jodconverter-web/src/main/bin/startup.sh index 8e69920d..0c41c676 100644 --- a/jodconverter-web/src/main/bin/startup.sh +++ b/jodconverter-web/src/main/bin/startup.sh @@ -1,2 +1,2 @@ #!/bin/bash -nohup java -jar jodconverter-web-1.5.8.RELEASE.jar ../log/kkFileView.log 2>&1 & \ No newline at end of file +nohup java -Dspring.config.location=../conf/application.properties -jar jodconverter-web-1.5.8.RELEASE.jar ../log/kkFileView.log 2>&1 & \ No newline at end of file diff --git a/jodconverter-web/src/main/conf/application.properties b/jodconverter-web/src/main/conf/application.properties index 3efa1975..7cfe78a3 100644 --- a/jodconverter-web/src/main/conf/application.properties +++ b/jodconverter-web/src/main/conf/application.properties @@ -1,3 +1,4 @@ +#######################################不可动态配置,需要重启生效####################################### server.port = 8012 spring.http.encoding.charset = utf8 ## Freemarker 配置 @@ -17,14 +18,18 @@ spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/re ## openoffice home路径 office.home = C:\\Program Files (x86)\\OpenOffice 4 server.tomcat.uri-encoding = UTF-8 -converted.file.charset = GBK #文件上传限制 spring.http.multipart.max-file-size=100MB + +#缓存实现类型,不配默认为JDK实现,可配置为redis实现(需要配置spring.redisson.address等参数) +#cache.type = redis +#redis连接 +#spring.redisson.address = 192.168.1.204:6379 + +#######################################可在运行时动态配置####################################### ##文本类型 simText = txt,html,xml,java,properties,mp3,mp4,sql #多媒体类型 media=mp3,mp4,flv, -#缓存实现类型,不配默认为JDK实现,可配置为redis实现(需要配置spring.redisson.address等参数) -#cache.type = redis -#redis连接 -#spring.redisson.address = 192.168.1.204:6379 \ No newline at end of file +#文件转换编码 +converted.file.charset = GBK diff --git a/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java b/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java new file mode 100644 index 00000000..9333fadd --- /dev/null +++ b/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java @@ -0,0 +1,38 @@ +package cn.keking.config; + +/** + * @auther: chenjh + * @time: 2019/4/10 17:22 + * @description + */ +public class ConfigConstants { + + private static String[] simText = {}; + private static String[] media = {}; + private static String convertedFileCharset; + + public static String[] getSimText() { + return simText; + } + + public static void setSimText(String[] simText) { + ConfigConstants.simText = simText; + } + + public static String[] getMedia() { + return media; + } + + public static void setMedia(String[] media) { + ConfigConstants.media = media; + } + + public static String getConvertedFileCharset() { + return convertedFileCharset; + } + + public static void setConvertedFileCharset(String convertedFileCharset) { + ConfigConstants.convertedFileCharset = convertedFileCharset; + } + +} diff --git a/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java b/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java new file mode 100644 index 00000000..2e90eea4 --- /dev/null +++ b/jodconverter-web/src/main/java/cn/keking/config/ConfigRefreshComponent.java @@ -0,0 +1,69 @@ +package cn.keking.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Properties; + +/** + * @auther: chenjh + * @time: 2019/4/10 16:16 + * @description 每隔1s读取并更新一次配置文件 + */ +@Component +public class ConfigRefreshComponent { + + private static final Logger LOGGER = LoggerFactory.getLogger(ConfigRefreshComponent.class); + + @PostConstruct + void refresh() { + Thread configRefreshThread = new Thread(new ConfigRefreshThread()); + configRefreshThread.start(); + } + + class ConfigRefreshThread implements Runnable { + @Override + public void run() { + try { + Properties properties = new Properties(); + String userDir = System.getProperty("user.dir"); + Properties properties1 = System.getProperties(); + if (userDir.endsWith("bin")) { + userDir = userDir.substring(0, userDir.length() - 4); + } + String separator = java.io.File.separator; + String configFilePath = userDir + separator + "conf" + separator + "application.properties"; + File file = new File(configFilePath); + if (!file.exists()) { + configFilePath = userDir + separator + "jodconverter-web" + separator + "src" + separator + "main" + separator + "conf" + separator + "application.properties"; + } + String text = null; + String media = null; + String convertedFileCharset = null; + String[] textArray = {}; + String[] mediaArray = {}; + while (true) { + BufferedReader bufferedReader = new BufferedReader(new FileReader(configFilePath)); + properties.load(bufferedReader); + text = properties.get("simText") == null ? "" : properties.get("simText").toString(); + media = properties.get("media") == null ? "" : properties.get("media").toString(); + convertedFileCharset = properties.get("converted.file.charset") == null ? "" : properties.get("converted.file.charset").toString(); + textArray = text.split(","); + mediaArray = media.split(","); + ConfigConstants.setSimText(textArray); + ConfigConstants.setMedia(mediaArray); + ConfigConstants.setConvertedFileCharset(convertedFileCharset); + Thread.sleep(1000L); + } + } catch (IOException | InterruptedException e) { + LOGGER.error("读取配置文件异常:{}", e); + } + } + } +} diff --git a/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java b/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java index a5158d03..9d484a80 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java @@ -1,5 +1,6 @@ package cn.keking.utils; +import cn.keking.config.ConfigConstants; import cn.keking.model.FileAttribute; import cn.keking.model.FileType; import cn.keking.service.cache.CacheService; @@ -63,6 +64,12 @@ public class FileUtils { * @return */ public FileType typeFromUrl(String url) { + if (ConfigConstants.getSimText() != null && ConfigConstants.getSimText().length > 0) { + simText = ConfigConstants.getSimText(); + } + if (ConfigConstants.getMedia() != null && ConfigConstants.getMedia().length > 0) { + media = ConfigConstants.getMedia(); + } String nonPramStr = url.substring(0, url.indexOf("?") != -1 ? url.indexOf("?") : url.length()); String fileName = nonPramStr.substring(nonPramStr.lastIndexOf("/") + 1); String fileType = fileName.substring(fileName.lastIndexOf(".") + 1); @@ -217,6 +224,9 @@ public class FileUtils { */ public void doActionConvertedFile(String outFilePath) { StringBuffer sb = new StringBuffer(); + if(ConfigConstants.getConvertedFileCharset() != null) { + charset = ConfigConstants.getConvertedFileCharset(); + } try (InputStream inputStream = new FileInputStream(outFilePath); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset))){ String line;