我的项目是Maven管理的 框架使用springBoot Spring Mybatis
1、最近在弄图片上传,前端控件用的是bootstrap fileinput 这个插件,不知道为什么前端控制了总是不起作用,multipart他的默认大小是102400字节,我这出现了一个奇怪的问题就是页面中上传的图片超过了multipart的默认大小后 就请求不到后台的方法了,定位问题都不好定位,偶然的一次机会出现了个提示,这才找到解决方案
解决方法:
1、在application.properties中添加:
multipart.maxFileSize=10M // 这个设置是单个文件上传大小
multipart.maxRequestSize=10M // 这个应该是设置最大请求
2、又单独写了一个类来读取
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;
@Configuration
public class FileUploadConfig {
/**
* 文件上传配置
*
* @return MultipartConfigElement
*/
@Bean
public MultipartConfigElement multipartConfigElement(
@Value("${multipart.maxFileSize}") String maxFileSize) {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个文件最大
factory.setMaxFileSize(maxFileSize);
// 设置总上传数据总大小
factory.setMaxRequestSize(maxFileSize);
String osName=System.getProperty("os.name");
if(osName.contains("Linux")){
factory.setLocation("/tmp");
}
return factory.createMultipartConfig();
}
}
这样上传文件就可以随心设置了
我在网上搜索的好多都说 上面是两种方法写哪一种都行,我是两个一起用的 单独的没有试过,反正就是可以上传啦!!!
希望能帮到大家!
后补:
由于长时间未使用系统,再次使用上传功能时会报如下错误
Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary up
这是因为无临时目录导致上传文件失败,临时文件不存在是因为linux自动清理10天未操作的临时文件目录
网上说了好几种办法都可以解决,我使用的是画线部分可以完美解决