Spring Boot默认上传的单个文件大小1MB,一次上传的总文件大小为10MB

单个文件上传使用MultipartFile参数来接收文件,多文件使用MultipartFile[]数组来接收,然后遍历它,当成单文件来处理。

问题一:如何配置上传文件大小限制?

@Configuration
public class FileConfig implements WebMvcConfigurer {
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个文件大小
factory.setMaxFileSize(DataSize.parse("10240MB"));
// 上传的总文件大小
factory.setMaxRequestSize(DataSize.parse("20480MB"));
return factory.createMultipartConfig();
}
}

思考:SpringBoot项目推荐使用jar包的方式来运行项目,而实际应用中我们也发现jar包运行项目更加方便。但是当打完jar包后,这个jar的大小就固定好了,上传的文件肯定传不到jar包里面了。SpringBoot提供了一种方式,将文件上传到服务器物理路径下,然后做个映射关系,让图片可以正常被访问,具体操作如下:

@Configuration
public class FileConfig implements WebMvcConfigurer { @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("file:"+"D://uploadfile/");
}
}

addResourceHandler("/static/**")表示访问路径为/static/文件名,addResourceLocations("file:"+"D://uploadfile/")表示文件存储的物理路径,"file:"为固定写法。

文件上传后台实现

@RestController
@Slf4j
public class FileUpload { @PostMapping("uploadFile")
public List uploadFile(@RequestParam("files") MultipartFile[] files) { // 存储上传成功的文件名,响应给客户端
List<String> list = new ArrayList<>();
// 判断文件数组长度
if(files.length <= 0){
list.add("请选择文件");
return list;
}
for(MultipartFile file : files){
// 源文件名
String originalFilename = file.getOriginalFilename();
// 文件格式
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 新文件名,避免文件名重复,造成文件替换问题
String fileName = UUID.randomUUID()+"."+suffix;
// 文件存储路径
String filePath = "D:/uploadFile/";
// 文件全路径
File targetFile = new File(filePath+fileName); // 判断文件存储目录是否存在,不存在则新建目录
if(!targetFile.getParentFile().exists()){
targetFile.getParentFile().mkdir();
}
try {
// 将图片保存
file.transferTo(targetFile);
list.add(originalFilename);
} catch (IOException e) {
log.info("文件上传异常={}",e);
}
}
return list;
}
}

静态资源问题

SpringBoot静态资源默认路径为:classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public/。也就是说如果想访问静态资源,则需要将静态资源 文件放在这四个路径下面。

注:classpath 指的是 SpringBoot项目resources

如果想自定义静态资源路径有两种方式,

application.yml中指定

spring:
resources:
static-locations: classpath:/templates/

代码实现WebMvcConfigurer

@Configuration
public class FileConfig implements WebMvcConfigurer { @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/templates/");
}

注:当配置了自定义静态资源路径后,其默认配置将失效

文件上传前端实现

在静态资源路径下,新建file.html文件,浏览器访问ip:port/file.html,进入file页面

<form enctype="multipart/form-data" method="post" action="/uploadFile">
文件:<input type="file" name="files"/>
<input type="submit" value="上传"/>
</form>

这里需要注意的是文件上传表单的enctype为multipart/form-data

此是spring-boot-route系列的第三篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同学有一个系统的认识。本文已收录至我的github,欢迎各位小伙伴star

githubhttps://github.com/binzh303/spring-boot-route

点关注、不迷路

如果觉得文章不错,欢迎关注点赞收藏,你们的支持是我创作的动力,感谢大家。

如果文章写的有问题,请不要吝啬,欢迎留言指出,我会及时核查修改。

如果你还想更加深入的了解我,可以微信搜索「Java旅途」进行关注。回复「1024」即可获得学习视频及精美电子书。每天7:30准时推送技术文章,让你的上班路不在孤独,而且每月还有送书活动,助你提升硬实力!

最新文章

  1. OpenCV函数解读之groupRectangles
  2. RecyclerView设置verticalSapcing等
  3. 【转】phpmyadmin万能密码漏洞
  4. I/O端口与I/O内存
  5. #IOS-navigation中左滑pop的三种方法
  6. Multiple dex files define Lcom/sina/sso/RemoteSSO错误解决办法
  7. windows下配置Java环境变量
  8. Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut
  9. java集合系列——List集合之Vector介绍(四)
  10. phpmyadmin拿webshell
  11. 简单的线程Thread使用
  12. s5-6 Linux 标准输出 系统优化 目录结构
  13. UVALive 4254 Processor(二分)
  14. 命令行方式调用winrar对文件夹进行zip压缩示例代码
  15. Concepts--&gt;Migrations
  16. Jmeter录制badboy
  17. XTU 1267 - Highway - [树的直径][2017湘潭邀请赛H题(江苏省赛)]
  18. Chrome插件汇总
  19. xshell各个版本下载
  20. Python之Flask框架使用

热门文章

  1. JAVA开源软件的技术选型--开源软件诞生2
  2. Mac 系统安装robot framework
  3. cookies、sessionStorage和localStorage
  4. python3笔记-字典
  5. 非IT行业大企程序员讲述MIS系统开发案例
  6. IDEA 2020 集成 Activity插件
  7. Python的链接数上升得太快了!足见Python之火!
  8. go http请求流程分析
  9. 将虚拟机IP与主机IP设置在同一网段的方法
  10. 《Java从入门到失业》第四章:类和对象(4.2):String类