代码拉取完成,页面将自动刷新
package com.wmx.www.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import org.springframework.util.unit.DataUnit;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.PostConstruct;
import javax.servlet.MultipartConfigElement;
import java.io.File;
/**
* WebMvc 扩展配置类,应用一启动,本类就会执行
* url 映射虚拟路径配置
*
* @author wangMaoXiong
* Created by Administrator on 2019/3/17 0017.
*/
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
private static final Logger logger = LoggerFactory.getLogger(MyWebMvcConfigurer.class);
/**
* 请求 url 中的资源映射,不推荐写死在代码中,最好提供可配置,如 /uploadFiles/**
*/
@Value("${uploadFile.resourceHandler}")
private String resourceHandler;
/**
* 上传文件保存的本地目录,使用@Value获取全局配置文件中配置的属性值,如 E:/wmx/uploadFiles/
*/
@Value("${uploadFile.location}")
private String location;
/**
* 如果上传文件保存的本地目录不存在,则创建,否则后期保存文件时,容易出现找不到路径的错误
*/
@PostConstruct
public void init() {
File file = new File(location);
if (!file.exists()) {
file.mkdirs();
logger.debug("服务器文件存在目录={},已经不存在,进行新建。", location);
} else {
logger.debug("服务器存储目录已经存在={}", location);
}
}
/**
* 配置静态资源映射
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//就是说 url 中出现 resourceHandler 匹配时,则映射到 location 中去,location 相当于虚拟路径
//映射本地文件时,开头必须是 file:/// 开头,表示协议
registry.addResourceHandler(resourceHandler).addResourceLocations("file:///" + location);
}
/**
* 文件上传配置
* 当全局yml文件中配置了spring.servlet.multipart.location属性值,则本方法不再生效,
* 否则自动覆盖全局Yml中的以下配置:
* spring.servlet.multipart.file-size-threshold=0B #将文件写入磁盘的阈值.
* spring.servlet.multipart.location= # 上传文件的临时存储目录(默认为系统临时目录).
* spring.servlet.multipart.max-file-size=1MB # 单个文件支持的最大大小.
* spring.servlet.multipart.max-request-size=10MB # 单次请求时,全部文件的不能超过的总大小.
*
* @return
*/
@Bean
@ConditionalOnExpression("'${spring.servlet.multipart.location:}'.length() <=0")
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
// 单个文件支持的最大大小.
multipartConfigFactory.setMaxFileSize(DataSize.of(1000, DataUnit.MEGABYTES));
// 单次请求时,全部文件的不能超过的总大小.
multipartConfigFactory.setMaxRequestSize(DataSize.of(1024, DataUnit.MEGABYTES));
// #将文件写入磁盘的阈值.
multipartConfigFactory.setFileSizeThreshold(DataSize.ofBytes(0));
// 上传文件的临时存储目录(默认为系统临时目录)
String tmpDirPath = System.getProperty("java.io.tmpdir");
File appTmpPath = new File(tmpDirPath, "file-server");
if (!appTmpPath.exists()) {
appTmpPath.mkdirs();
}
multipartConfigFactory.setLocation(appTmpPath.getAbsolutePath());
MultipartConfigElement multipartConfig = multipartConfigFactory.createMultipartConfig();
// 文件上传spring.servlet.multipart配置: maxFileSize=1048576000 maxRequestSize=1073741824 fileSizeThreshold=0 location=C:\Users\Think\AppData\Local\Temp\file-server
logger.warn("文件上传spring.servlet.multipart配置: maxFileSize={} maxRequestSize={} fileSizeThreshold={} location={}", multipartConfig.getMaxFileSize(), multipartConfig.getMaxRequestSize(), multipartConfig.getFileSizeThreshold(), multipartConfig.getLocation());
return multipartConfig;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。