限制上传文件大小的方式
限制上传文件大小的方式:
总结:tomcat配置文件server.xml设置,MultipartResolve设置,application.yml配置设置,Nginx配置,程序内部处理。
-
添加maxPortSize,如下:
<Connector port="8081" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" maxPostSize="0"/>注意:
只对Post请求进行拦截处理。
在tomcat7.0.63 之前 maxPostSize 设置为0 或者是 -负数都可以表示不做限制。
在tomcat7.0.63之后,maxPostSize只有设置为负数才表示不做限制。
-
MultipartResolve的配置,使用@Bean进行配置,如下:
@Bean public MultipartResolver multipartResolver(){ CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(1024*1024*150); multipartResolver.setDefaultEncoding("UTF-8"); //多文件解析需要设置 multipartResolver.setResolveLazily(true); return multipartResolver; } -
application.yml配置设置,有两种,一种直接配置springboot内置的tomcat,一种配置servlet,servlet是在resolve之前进行处理。
server: port: 8080 tomcat: max-http-form-post-size: 100MBservlet: multipart: enabled: true max-file-size: 9MB max-request-size: 50MB -
Nginx配置client_max_body_size,如下:
location / { proxy_pass http://fabo; proxy_redirect off; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 1000m; } -
程序内部进行处理,使用MultipartFile的getSize()方法,如下:
if (m.getSize() > 10000) { //to do something }

浙公网安备 33010602011771号