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;