spring boot 中修改文件上传大小的配置

在做spm项目的时候,手机端上传图片,会报一个413错误,经过排查,原来是nginx 配置和后端代码上传文件大小的错误。

先说后端代码的错误,错误信息:

Connection terminated as request was larger than 10485760....

//因请求而终止的连接大于10485760。。。。

此错误属于在sping boot框架中的错误,在spring boot中默认上传图片的大小为1M,如果上传图片的大小超过了它,那么就会报如上类似的错误,此时需要修改框架中上传文件的大小。

修改设置有两种方式:

//第一种:
//在配置文件中添加配置:

@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory(); //文件最大10M,DataUnit提供5中类型B,KB,MB,GB,TB
     factory.setMaxFileSize("10240KB"); /// 设置单个上传数据总大小10M
     factory.setMaxRequestSize("102400KB"); /// 设置总上传数据总大小100M
     return factory.createMultipartConfig();
}



//第二种:
//直接在配置文件中修改
spring: 
  servlet: 
    multipart:
       max-file-size: 20MB
       max-request-size=20MB 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
Spring Boot,可以通过配置文件application.properties或application.yml来限制上传文件的大小。如果你想使用XML文件来进行配置的话,可以在Spring Boot项目的classpath下创建一个名为`applicationContext.xml`的文件,并在其添加以下内容: ``` <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1000000" /> </bean> ``` 其,`maxUploadSize`属性设置了最大的上传文件大小,单位为字节。上述配置将允许上传的文件大小最大为1MB。你可以根据需要进行修改。 另外,如果你想针对不同的路径设置不同的上传文件大小限制,可以使用`RequestMappingHandlerMapping`来进行配置。具体的做法是在`applicationContext.xml`文件添加以下内容: ``` <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> <property name="interceptors"> <list> <bean class="org.springframework.web.servlet.handler.MappedInterceptor"> <constructor-arg> <util:constant static-field="org.springframework.web.servlet.HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE" /> </constructor-arg> <constructor-arg> <bean class="com.example.UploadSizeInterceptor" /> </constructor-arg> </bean> </list> </property> </bean> ``` 其,`UploadSizeInterceptor`是自定义的拦截器,用于对上传文件大小进行限制。你需要在`UploadSizeInterceptor`实现`preHandle`方法,并在其根据请求路径设置不同的上传文件大小限制。具体的做法可以参考以下代码: ``` public class UploadSizeInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String path = request.getServletPath(); if (path.startsWith("/upload1")) { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(1000000L); if (!multipartResolver.isMultipart(request)) { throw new Exception("上传文件格式不正确"); } } else if (path.startsWith("/upload2")) { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(2000000L); if (!multipartResolver.isMultipart(request)) { throw new Exception("上传文件格式不正确"); } } return true; } } ``` 上述代码,对于请求路径以`/upload1`开头的请求,设置最大上传文件大小为1MB;对于请求路径以`/upload2`开头的请求,设置最大上传文件大小为2MB。你可以根据需要进行修改

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张铎(信念)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值