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:"为固定写法。
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>spring-boot-route(一)Controller接收参数的几种方式
spring-boot-route(二)读取配置文件的几种方式
spring-boot-route(三)实现多文件上传
spring-boot-route(四)全局异常处理
spring-boot-route(五)整合swagger生成接口文档
spring-boot-route(六)整合JApiDocs生成接口文档
spring-boot-route(七)整合jdbcTemplate操作数据库
spring-boot-route(八)整合mybatis操作数据库
spring-boot-route(九)整合JPA操作数据库
spring-boot-route(十)多数据源切换
spring-boot-route(十一)数据库配置信息加密
spring-boot-route(十二)整合redis做为缓存
spring-boot-route(十三)整合RabbitMQ
spring-boot-route(十四)整合Kafka
spring-boot-route(十五)整合RocketMQ
spring-boot-route(十六)使用logback生产日志文件
spring-boot-route(十七)使用aop记录操作日志
spring-boot-route(十八)spring-boot-adtuator监控应用
spring-boot-route(十九)spring-boot-admin监控服务
spring-boot-route(二十)Spring Task实现简单定时任务
spring-boot-route(二十一)quartz实现动态定时任务
spring-boot-route(二十二)实现邮件发送功能
spring-boot-route(二十三)开发微信公众号
这个系列的文章都是工作中频繁用到的知识,学完这个系列,应付日常开发绰绰有余。如果还想了解其他内容,扫面下方二维码告诉我,我会进一步完善这个系列的文章!