diff --git a/jodconverter-web/src/main/conf/application.properties b/jodconverter-web/src/main/conf/application.properties index ed3ac1e8..5c568a18 100644 --- a/jodconverter-web/src/main/conf/application.properties +++ b/jodconverter-web/src/main/conf/application.properties @@ -12,15 +12,15 @@ spring.freemarker.expose-session-attributes = true spring.freemarker.request-context-attribute = request spring.freemarker.suffix = .ftl -##资源映射路径 -file.dir = D:\\kkFileview\\ -spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${file.dir} -##openoffice home路径 -#office.home = C:\\Program Files (x86)\\OpenOffice 4 server.tomcat.uri-encoding = UTF-8 #文件上传限制 spring.http.multipart.max-file-size=100MB +#文件资源路径(默认为打包根路径下的file目录下) +#file.dir = D:\\kkFileview\\ +#openoffice home路径 +#office.home = C:\\Program Files (x86)\\OpenOffice 4 + #缓存实现类型,不配默认为JDK实现,可配置为redis实现(需要配置spring.redisson.address等参数) #cache.type = redis #redis连接 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 9333fadd..ded6cd01 100644 --- a/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java +++ b/jodconverter-web/src/main/java/cn/keking/config/ConfigConstants.java @@ -1,15 +1,23 @@ package cn.keking.config; +import org.artofsolving.jodconverter.office.OfficeUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.File; + /** * @auther: chenjh * @time: 2019/4/10 17:22 * @description */ +@Component public class ConfigConstants { private static String[] simText = {}; private static String[] media = {}; private static String convertedFileCharset; + private static String fileDir = OfficeUtils.getHomePath() + File.separator + "file" + File.separator; public static String[] getSimText() { return simText; @@ -35,4 +43,18 @@ public class ConfigConstants { ConfigConstants.convertedFileCharset = convertedFileCharset; } + public static String getFileDir() { + return fileDir; + } + + @Value("${file.dir:default}") + public void setFileDir(String fileDir) { + if (!"default".equals(fileDir)) { + if (!fileDir.endsWith(File.separator)) { + fileDir = fileDir + File.separator; + } + ConfigConstants.fileDir = fileDir; + } + } + } diff --git a/jodconverter-web/src/main/java/cn/keking/config/WebConfig.java b/jodconverter-web/src/main/java/cn/keking/config/WebConfig.java new file mode 100644 index 00000000..ffacc9ad --- /dev/null +++ b/jodconverter-web/src/main/java/cn/keking/config/WebConfig.java @@ -0,0 +1,28 @@ +package cn.keking.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * @auther: chenjh + * @time: 2019/4/16 20:04 + * @description + */ +@Configuration +public class WebConfig extends WebMvcConfigurerAdapter { + + private final static Logger LOGGER = LoggerFactory.getLogger(WebConfig.class); + /** + * 访问外部文件配置 + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + String filePath = ConfigConstants.getFileDir(); + LOGGER.info("Add resource locations: {}", filePath); + registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/","classpath:/resources/","classpath:/static/","classpath:/public/","file:" + filePath); + super.addResourceHandlers(registry); + } +} 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 7aa80513..11709b85 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 @@ -1,5 +1,6 @@ package cn.keking.service.impl; +import cn.keking.config.ConfigConstants; import cn.keking.model.FileAttribute; import cn.keking.model.ReturnResponse; import cn.keking.service.FilePreview; @@ -25,8 +26,7 @@ public class OfficeFilePreviewImpl implements FilePreview { @Autowired FileUtils fileUtils; - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); @Autowired DownloadUtils downloadUtils; diff --git a/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java b/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java index 0b00f994..4e6c4d0c 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/DownloadUtils.java @@ -1,7 +1,7 @@ package cn.keking.utils; +import cn.keking.config.ConfigConstants; import cn.keking.model.ReturnResponse; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; import java.net.*; @@ -13,8 +13,7 @@ import java.util.UUID; @Component public class DownloadUtils { - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); /** * 一开始测试的时候发现有些文件没有下载下来,而有些可以;当时也是郁闷了好一阵,但是最终还是不得解 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 9d484a80..5372374e 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java @@ -30,8 +30,7 @@ public class FileUtils { @Autowired CacheService cacheService; - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); @Value("${converted.file.charset}") String charset; diff --git a/jodconverter-web/src/main/java/cn/keking/utils/ShedulerClean.java b/jodconverter-web/src/main/java/cn/keking/utils/ShedulerClean.java index d345cff1..fdb21236 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/ShedulerClean.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/ShedulerClean.java @@ -1,12 +1,11 @@ package cn.keking.utils; -import org.springframework.beans.factory.annotation.Value; +import cn.keking.config.ConfigConstants; import org.springframework.stereotype.Component; @Component public class ShedulerClean { - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); // @Scheduled(cron = "0 0 23 * * ?") //每晚23点执行一次 public void clean(){ diff --git a/jodconverter-web/src/main/java/cn/keking/utils/SimTextUtil.java b/jodconverter-web/src/main/java/cn/keking/utils/SimTextUtil.java index 90396552..44c299c7 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/SimTextUtil.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/SimTextUtil.java @@ -1,8 +1,8 @@ package cn.keking.utils; +import cn.keking.config.ConfigConstants; import cn.keking.model.ReturnResponse; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** @@ -12,8 +12,7 @@ import org.springframework.stereotype.Component; */ @Component public class SimTextUtil { - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); @Autowired DownloadUtils downloadUtils; 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 ca6ba647..048fb67d 100644 --- a/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java +++ b/jodconverter-web/src/main/java/cn/keking/utils/ZipReader.java @@ -1,5 +1,6 @@ package cn.keking.utils; +import cn.keking.config.ConfigConstants; import cn.keking.model.FileType; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -11,7 +12,6 @@ import com.google.common.collect.Maps; 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.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; @@ -36,8 +36,7 @@ public class ZipReader { @Autowired FileUtils fileUtils; - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); ExecutorService executors = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); diff --git a/jodconverter-web/src/main/java/cn/keking/web/controller/FileController.java b/jodconverter-web/src/main/java/cn/keking/web/controller/FileController.java index 12a47d1c..e913ff2c 100644 --- a/jodconverter-web/src/main/java/cn/keking/web/controller/FileController.java +++ b/jodconverter-web/src/main/java/cn/keking/web/controller/FileController.java @@ -1,5 +1,6 @@ package cn.keking.web.controller; +import cn.keking.config.ConfigConstants; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableMap; @@ -7,7 +8,6 @@ import com.google.common.collect.Lists; import cn.keking.model.ReturnResponse; import cn.keking.utils.FileUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -28,8 +28,7 @@ import java.util.UUID; */ @RestController public class FileController { - @Value("${file.dir}") - String fileDir; + String fileDir = ConfigConstants.getFileDir(); @Autowired FileUtils fileUtils; String demoDir = "demo";