spring boot 文件上传 -- CommonsMultipartFile 接收

场景:

旧的springMVC项目中使用CommonsMultipartFile类型来接收上传的文件,现在进行迁移,框架使用springboot2.0+ ,始终无法接收请求。

原因:

  1. Spring Boot默认使用StandardServletMultipartResolver处理Multipart。
    对应的使用StandardMultipartFile来接收文件数据。
  2. 如果希望用CommonsMultipartFile来接收文件数据,
    在没有配置multipartResolver为 CommonsMultipartResolver,
    使用CommonsMultipartResolver来处理Multipart,将会报错。

解决:

Multipart配置类:

package com.example.hellospringboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Configuration
public class MultipartConfig {
   
    @Bean(name = "multipartResolver")
    public CommonsMultipartResolver getCommonsMultipartResolver() {
   
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(20971520);
        multipartResolver
### Spring Boot 中配置文件上传解析器 在Spring Boot应用程序中,为了支持文件上传功能并处理`CommonsMultipartFile`对象,需要正确设置multipart文件解析器。这通常涉及到调整默认的`spring.servlet.multipart.*`属性来满足特定需求。 #### 使用Properties格式配置 对于`.properties`文件而言,可以在`application.properties`里加入如下所示的相关参数: ```properties # 启用多部分(即文件)上传的支持 spring.servlet.multipart.enabled=true # 设置单个文件的最大大小,默认单位为字节(B),这里设定了最大允许上传10MB的文件 spring.servlet.multipart.max-file-size=10MB # 整个HTTP请求的数据总量上限,同样以B为单位;此值应大于等于maxFileSize加上其他表单项数据量之和 spring.servlet.multipart.max-request-size=20MB # 指定临时存储位置用于保存上传过程中的大文件片段 spring.servlet.multipart.location=/tmp/uploadedFiles ``` 这些配置项能够帮助开发者控制文件上传行为以及优化性能表现[^4]。 #### 使用YAML格式配置 如果偏好采用更简洁直观的YAML语法,则可在`application.yml`内定义相同的选项: ```yaml spring: servlet: multipart: enabled: true # 开启文件上传服务 max-file-size: "10MB" # 单个文件尺寸限制 max-request-size: "20MB" # 请求总容量约束 location: /tmp/uploadedFiles # 存储路径指定 ``` 上述两种方法均可实现相同的效果,并且可以根据实际应用场景灵活选用其中之一[^3]。 值得注意的是,当使用Apache Commons FileUpload库时,还需要确保项目依赖包含了相应的jar包。可以通过引入`commons-fileupload`依赖完成集成工作。此外,为了让控制器层可以接收`CommonsMultipartFile`类型的参数,可能还需额外配置自定义转换器或适配器逻辑[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值