java.lang.RuntimeException: java.nio.file.NoSuchFileException: /tmp/undertow.16318593944131808257.9002/undertow8460611219768761359upload
上传文件时突然出现此异常
原因网上讲的都很明白
linux 把 tmp 回收了
路径不存在了
不过他们的解决方式都不是我喜欢的
在 applicaiton.yml(applicaiton.property) 中添加配置 :
spring:
servlet:
multipart:
location: /data/tmp
手动指定目录后,必须保证该目录存在,并有读写的权限,创建该目录 mkdir -p /data/tmp
在配置文件中加配置还要指定目录 感觉不是很方便
附上我自己的解决方式
在 jar 目录下生成临时文件夹 不会被 linux回收 也不需要指定固定路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| import java.io.File; import java.io.FileNotFoundException;
import javax.servlet.MultipartConfigElement;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.util.ResourceUtils; import org.springframework.util.unit.DataSize;
import cn.hutool.core.io.FileUtil;
@Configuration public class BaseConfig {
@Autowired Environment env; @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); factory.setMaxFileSize(DataSize.parse("1024MB")); factory.setMaxRequestSize(DataSize.parse("1024MB"));
String jar_parent = System.getProperty("user.dir"); try { jar_parent = new File(ResourceUtils.getURL("classpath:").getPath()).getParentFile().getParentFile().getParent(); } catch (FileNotFoundException e) { }
String path =jar_parent + File.separator + "temp" + File.separator + env.getProperty("spring.application.name"); FileUtil.mkdir(path); factory.setLocation(path); return factory.createMultipartConfig(); }
}
|