springboot设置文件上传大小,默认是1mb

news2025/1/20 4:43:32

问题排查和解决过程

之前做了个项目,需要用到文件上传,启动项目正常,正常上传图片也正常,但这里图片刚好都小于1M,在代码配置文件里面也写了配置,限制大小为500M,想着就没问题(测试环境覆盖OK,正式环境不太一样)

今天有同事,在项目上替换内容图片,突然报了个错“413”

1、前端控制台报错

Access to XMLHttpRequest at 'https://opm.custom.zdjcyun.com/cos/upload' from origin 'http://111.230.194.242:9981' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这里当然不是什么跨域问题,然后后端接口调用排查

2、控制台异常

org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (1121317) exceeds the configured maximum (1048576)

Caused by: java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (1121317) exceeds the configured maximum (1048576)

Caused by: org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (1121317) exceeds the configured maximum (1048576)

从上述异常可以看出,是因为上传的file文件超过了spring默认配置的最大值1048576 bytes,上传文件我们通常情况下是使用MultipartFile接口类接收前端上传的文件,可见对于MultipartFile文件的默认限制也是1048576 bytes,即1M。

重点:这里我的配置文件已经设置过文件大小为500M

spring:
    servlet:
      multipart:
        enabled: true
        file-size-threshold: 0
        max-file-size: 500MB
        max-request-size: 500MB

3、测试环境

测试正常通过

4、线上环境

此时已经意识到是线上环境的问题,但我们用的是容器管理,KubeSphere统一管理,nginx一般是默认配置,负责生产环境的同事这个默认配置是没有更改过的,都没注意,还好改一下路由配置就OK了

问题总结

线上环境总是和测试环境有不同,测试用例覆盖不够,相应路由和代理配置要考虑周全,一般就是①代码配置、②nginx配置、③其他路由网关配置、④前端限制,开发过程按1234排查,线上排查则反向按4321顺序排查

相关知识

1、上传文件默认参数

SpringBoot不同的版本,对应的设置参数不同:

Spring Boot 1.3.x and earlier

multipart.maxFileSize
multipart.maxRequestSize


Spring Boot 1.4.x and 1.5.x

spring.http.multipart.maxFileSize
spring.http.multipart.maxRequestSize

Spring Boot 2.x

spring.servlet.multipart.maxFileSize
spring.servlet.multipart.maxRequestSize

2、配置方式

方法一、在配置文件.yml或者.properties中直接修改参数

例如我使用的是SpringBoot 2.2.2的版本,然后直接再配置文件中设置参数大小:

#做限制的参数配置
spring:
  servlet:
    multipart:
      enabled: true #默认支持文件上传
      max-file-size: 20MB # 最大支持文件大小
      max-request-size: 30MB # 最大支持请求大小

#不做限制的参数配置
spring:
  servlet:
    multipart:
      enabled: true #默认支持文件上传
      max-file-size: -1 #不做限制
      max-request-size: -1 #不做限制

设置完重启项目即可成功上传文件。

方法二、自定义config配置类

将参数配置在远程配置文件中心,如果是配置项目中的配置文件中,那就跟方法一一样,就没必要再单独写配置类了,将参数配置在远程配置中心,就是为了可以根据临时需求动态修改参数,而不用重启项目,开发过程中所有配置保持一致通过测试即可。

常见的远程配置文件中心服务有Nacos、Apollo(阿波罗)、SpringCloud等等,或者容器使用文件挂载,更改配置后,重新构件用例即可。
方法三、自定义MultipartFileConfig配置类:

@Configuration
public class MultipartFileConfig {

    @Value("${config.multifile.maxFileSize}")
    private Long maxFileSize;
    @Value("${config.multifile.maxRequestSize}")
    private Long maxRequestSize;

    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        /**
         * 单个数据大小,
         * DataSize.ofMegabytes(maxFileSize)默认是配置字节,将字节转化为MB
         */
        factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize));
        // 总上传数据大小
        factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize));
        return factory.createMultipartConfig();
    }
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于NXP i.MX 6ULL核心板的物联网模块开发案例(1)

目录 前 言 1 SDIO WIFI模块测试 1.1 STA模式测试 1.2 AP模式测试 1.3 SDIO WIFI驱动编译 前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit …

PDF怎么批量加密?掌握这招事半功倍

PDF文件是一种广泛使用的文档格式,而加密可以有效地保护PDF文件的安全性。当需要批量加密PDF文件时,以下是一些方法及注意事项。 PDF批量加密的方法 相信很多小伙伴平时都是直接在PDF阅读器中对文档进行加密,但是这样只能每次对当前打开的文…

当你在浏览器中输入了网址访问时产生了哪些技术步骤

当你在浏览器中输入了网址访问时产生了哪些技术步骤 前段时间在知乎上了看一些网络方面的知识,刚好小编自己也是从事这一块的相关工作由对网络方面有一定的了解。今天我们来讲讲,当你在浏览器中输入本站域名并回车后,这背后到底发生来什么事…

yolov3加上迁移学习和适度的数据增强形成的网络应用在输电线异物检测

Neural Detection of Foreign Objects for Transmission Lines in Power Systems Abstract. 输电线路为电能从一个地方输送到另一个地方提供了一条路径,确保输电线路的正常运行是向城市和企业供电的先决条件。主要威胁来自外来物,可能导致电力传输中断。…

【高阶数据结构】二叉树搜索树 {概念;实现:核心结构,增删查,默认成员函数;应用:K模型和KV模型;性能分析;相关练习}

二叉搜索树 一、二叉搜索树的概念 二叉搜索树又称二叉排序树,它可以是一棵空树,若果不为空则满足以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点…

Cadence软件屏幕显示问题

问题 就是今天打开Cadence软件想导出网表看一下,发现没有显示确定按钮什么的,那个窗口也是无语,不能移动,缩放也只能左右缩放,还不能缩小什么的,真的醉了,后面就是调整窗口的分辨率。 因为我最…

windwos系统如何创建typecho个人博客并通过内网穿透实现无公网IP访问

文章目录 前言1. 环境安装2.安装Typecho3.安装cpolar内网穿透4. 固定公网地址5.配置Typecho 前言 Typecho是一款PHP语言编写的开源博客程序,它是一个轻量级的内容管理系统,专注于博客领域。支持多用户、多站点、多语言等功能,可以满足不同用…

Win10怎么关闭自动更新?简单4招为你解决烦恼!

“买了一部win10的电脑,每次电脑自动更新都会导致我一些文件丢失或者系统错误。怎么才能关闭win10自动更新的功能呢?” Win10自动更新有时候会很影响我们使用电脑。在目前电脑用户中,使用win10系统的用户占大多数。因此很多朋友都会反映win10…

LLM(大语言模型)解码时是怎么生成文本的?

Part1配置及参数 transformers4.28.1 源码地址:transformers/configuration_utils.py at v4.28.1 huggingface/transformers (github.com) 文档地址:Generation (huggingface.co) 对于生成任务而言:text-decoder, text-to-text, speech-…

华为质量管理:从产品质量到用户体验,Kano模型成为新方向

目录 前言 华为质量管理的四个阶段 基于 IPD 如何做质量管理呢? CSDN相关课程 作者简介 前言 今天继续来谈谈华为流程体系中的质量管理过程。 通常来说质量具体是指产品的质量,也就是产品的使用价值及其属性。 产品再细分的话可以分为三个层次&a…

沃尔玛、亚马逊、ozon卖家必看:如何为旺季做准备?

近二十年来,得益于国家外贸政策的大力扶持,再加上近几年国家对跨境电商行业发展的高度重视,国货出海机会明显增多。 在政策利好的情况下,生产制造业的蓬勃发展等各种有利的局面,可谓是天时地利人和,那么在…

JetBrains 2023.2全新发布!IDEA、PyCharm等支持AI辅助

日前JetBrains官方正式宣布旗下IDE系列今年第二个重要版本——v2023.2全新发布,涵盖了 IntelliJ IDEA、PyCharm、WebStorm等一众知名产品,接下来我们一起详细了解一下他们的更新重点吧~ IntelliJ IDEA v2023.2——引入AI辅助开发 IntelliJ IDEA 2023.2…

java-CyclicBarrier、CountDownLatch、Semaphore 的用法以及 volatile 关键字的作用

CyclicBarrier、CountDownLatch、Semaphore 的用法 1. CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才…

powerJob报错以及解决办法集锦

1. 本地测试成功新建任务并运行成功,但是部署到服务器时新建任务只要 “参数”有中文就无法报错 前台报错信息: ERROR:JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException…

MySQL 小数类型介绍

文章目录 前言1. 浮点类型1.1 数值精度说明1.2 整数超出范围1.3 小数超出范围1.4 精度误差说明 2. 定点类型2.1 数值精度说明2.2 整数超出范围2.3 小数超出范围 总结 前言 对于保证精度的数字,MySQL 也有对应的小数类型,下图是 MySQL 中小数类型概览。 …

Unity 之利用 localEulerAngle与EulerAngle 控制物体旋转

文章目录 概念讲解localEulerAngle与EulerAngle的区别 概念讲解 欧拉角(Euler Angles)是一种常用于描述物体在三维空间中旋转的方法。它使用三个角度来表示旋转,分别绕物体的三个坐标轴(通常是X、Y和Z轴)进行旋转。这…

cvat 安装部署

官网地址: https://github.com/opencv/cvat/tree/masterhttps://github.com/opencv/cvat/tree/master 1.从官网上下载源码地址。 2.配置环境变量 vim /etc/profile 或者执行: export CVAT_HOSTyour-ip-address 3.执行命令 docker-compose up -d …

视频中的声音怎么提取出来?这样做提取出来很简单

提取视频中的声音可以有多种用途。例如,我们可能希望从视频中提取音乐或音效,以在其他项目中使用。或者,可能需要将视频中的对话转录为文本,以便更轻松地编辑和共享内容。无论目的是什么,提取视频中的声音都可以帮助我…

Dwg如何转dxf格式?分享三种转换小技巧

DWG格式是CAD的原生格式,但是DXF文件格式是CAD支持的通用格式。将DWG文件转换为DXF文件可以使其他软件能够读取和编辑这些文件,因为大多数CAD软件都支持DXF格式。此外,DXF文件比DWG文件更小,在传输和存储时更方便。因此&#xff0…

“摧毁我们的文明”?推特博主马斯克批评TikTok:我决定不再使用

根据8月25日的消息,推特博主DogeDesigner发表了关于TikTok的批评言论,声称这个应用正在“摧毁我们的文明”。 他在配图中展示了两种形象,左边的形象代表着各方面的专家知识,如天文学、数学、物理学、哲学和生活等,但似…