springboot上传文件过大的500异常解决

 更新时间:2019年09月28日 10:37:03   作者:呵呵哒小码农  
这篇文章主要介绍了springboot上传文件过大的500异常解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

修改appliaction.properties

# 单个文件最大20m
spring.servlet.multipart.max-file-size=20MB
#一次请求最大100M
spring.servlet.multipart.max-request-size=100MB

如果配置文件为appliaction.yml的这样配置文件:

spring:
servlet:
multipart:
maxFileSize: 20MB
maxRequestSize: 100MB

500代码异常,在启动类的里追加

/**
 * 文件上传配置
 *
 * @return
 */
@Bean
public MultipartConfigElement multipartConfigElement() {
/*
     springBoot 1.0+ 推荐这种写法
      MultipartConfigFactory factory = new MultipartConfigFactory();
      //单个文件最大
      factory.setMaxFileSize("20480KB"); //KB,MB
      factory.setMaxFileSize("20480KB");
      /// 设置总上传数据总大小
      factory.setMaxRequestSize("102400KB");
      return factory.createMultipartConfig();

*/
      // springBoot 2.0+ 推荐这种写法,

      MultipartConfigFactory factory = new MultipartConfigFactory();
      //文件最大10M,DataUnit提供5中类型B,KB,MB,GB,TB
      factory.setMaxFileSize(DataSize.of(10, DataUnit.MEGABYTES));
      /// 设置总上传数据总大小10M
      factory.setMaxRequestSize(DataSize.of(100, DataUnit.MEGABYTES));
      return factory.createMultipartConfig();
}

这是我的启动类:

package com.tythin.tyboot.rest;

import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import com.tythin.tyboot.core.config.WebAutoConfiguration;

import javax.servlet.MultipartConfigElement;

@SpringBootApplication(exclude = { WebAutoConfiguration.class })
@EnableScheduling
@MapperScan(basePackages = "XXXX")
public class TybootRestApplication {

  public static void main(String[] args) {
    SpringApplication.run(TybootRestApplication.class, args);
  }

  @Configuration
  public class CorsConfig {
    private CorsConfiguration buildConfig() {
      CorsConfiguration corsConfiguration = new CorsConfiguration();
      corsConfiguration.addAllowedOrigin("*"); // 1允许任何域名使用
      corsConfiguration.addAllowedHeader("*"); // 2允许任何头
      corsConfiguration.addAllowedMethod("*"); // 3允许任何方法(post、get等)
      return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
      UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/**", buildConfig()); // 4
      return new CorsFilter(source);
    }

    /**
     * 文件上传配置
     *
     * @return
     */
    @Bean
    public MultipartConfigElement multipartConfigElement() {
/*
     springBoot 1.0+ 推荐这种写法
      MultipartConfigFactory factory = new MultipartConfigFactory();
      //单个文件最大
      factory.setMaxFileSize("20480KB"); //KB,MB
      factory.setMaxFileSize("20480KB");
      /// 设置总上传数据总大小
      factory.setMaxRequestSize("102400KB");
      return factory.createMultipartConfig();

*/
      // springBoot 2.0+ 推荐这种写法,

      MultipartConfigFactory factory = new MultipartConfigFactory();
      //文件最大10M,DataUnit提供5中类型B,KB,MB,GB,TB
      factory.setMaxFileSize(DataSize.of(10, DataUnit.MEGABYTES));
      /// 设置总上传数据总大小10M
      factory.setMaxRequestSize(DataSize.of(100, DataUnit.MEGABYTES));
      return factory.createMultipartConfig();
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • spring boot 监听容器启动代码实例

    spring boot 监听容器启动代码实例

    这篇文章主要介绍了spring boot 监听容器启动代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java中如何判断线程池任务已执行完成

    Java中如何判断线程池任务已执行完成

    这篇文章主要介绍了Java中如何判断线程池任务已执行完成,文章围绕主题展开详细相关资料,具有一定的参考价值需要的小伙伴可以参考以参考一下
    2022-05-05
  • IDEA如何实现批量修改变量名

    IDEA如何实现批量修改变量名

    这篇文章主要介绍了IDEA如何实现批量修改变量名问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • java中调用super的实例讲解

    java中调用super的实例讲解

    在本篇文章里小编给大家分享了一篇关于java中调用super的实例讲解内容,有兴趣的朋友们可以学习下。
    2020-12-12
  • java基础(System.err和System.out)详解

    java基础(System.err和System.out)详解

    下面小编就为大家带来一篇java基础(System.err和System.out)详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java中的synchronized和ReentrantLock的区别详细解读

    Java中的synchronized和ReentrantLock的区别详细解读

    这篇文章主要介绍了Java中的synchronized和ReentrantLock的区别详细解读,synchronized是Java内建的同步机制,所以也有人称其为 IntrinsicLocking,它提供了互斥的语义和可见性,当一个线程已经获取当前锁时,其他试图获取的线程只能等待或者阻塞在那里,需要的朋友可以参考下
    2024-01-01
  • 详解Spring @Lazy注解为什么能破解死循环

    详解Spring @Lazy注解为什么能破解死循环

    这篇文章主要来和大家探讨一下Spring中的@Lazy注解为什么能破解死循环,文中的示例代码讲解详细,具有一定的参考价值,需要的可以了解一下
    2023-07-07
  • Springboot使用kafka的两种方式

    Springboot使用kafka的两种方式

    在公司用kafka比较多,今天整理下Springboot使用kafka的两种方式,Kafka作为一个消息发布订阅系统,就包括消息生成者和消息消费者,文中通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-11-11
  • Swing常用组件之单选按钮和复选框

    Swing常用组件之单选按钮和复选框

    Swing是一个用于开发Java应用程序用户界面的开发工具包,这篇文章主要介绍了Swing常用组件之单选按钮和复选框,感兴趣的朋友可以参考一下
    2016-05-05
  • 用java实现跳动的小球示例代码

    用java实现跳动的小球示例代码

    这篇文章主要介绍了用java实现跳动的小球,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论