1、配置:spring.servlet.multipart.location=/data/tmp
2、代码
@Configuration
public class MultipartConfig {@Value("${spring.servlet.multipart.location}")private String tmpLocation;@Beanpublic MultipartConfigElement multipartConfigElement() {MultipartConfigFactory factory = new MultipartConfigFactory();// 若没有该目录,则创建,此处使用了第三方插件的FileUtil,各位可以使用原生File实现该逻辑if (!FileUtil.exist(tmpLocation)) {FileUtil.mkdir(tmpLocation);}factory.setLocation(tmpLocation);return factory.createMultipartConfig();}
}
3、
通过上述两项配置可以实现spring boot 使用undertow容器上传文件时将/tmp/undertow*的临时目录切换至指定的目录下的效果。
但是,依然会在/tmp目录创建一个4k大小的undertow*的目录,不过上传时产生的临时目录不会再存放到/tmp/undertow*下了(可以在上传文件时实时观察/tmp/undertow*和/data/tmp的目录大小判断,上传途中/tmp/undertow*目录无任何变化,而/data/tmp目录一直在变大,当上传完成后/data/tmp大小恢复至0,说明被清理了)