Springboot接口如何接收多个文件以及如何将其保存到服务器

 更新时间:2026年05月27日 11:03:16   作者:缴鸿剑Jackson  
本文给大家介绍了Springboot接口如何接收多个文件以及如何将其保存到服务器,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一.接收多个文件(即接收文件List)

1.核心思路:使用post请求、List<MultipartFile>,就可以接收文件list

2.代码编写

@Api(tags = "测试接口")
@RestController
@RequestMapping("/test")
public class TestController {
    @PostMapping("/hello")
    public String hello(@RequestParam("files") List<MultipartFile> files) {
        if(files == null || files.isEmpty()){
            return "请选择至少一个文件";
        }
        for(MultipartFile file : files){
            if(!file.isEmpty()){
                //获取文件名
                String originalFilename = file.getOriginalFilename();
                //获取文件大小(单位是B,即Byte字节)
                long fileSize = file.getSize();
                //获取文件类型
                String fileType = file.getContentType();
                //日志输出到控制台
                System.out.println("成功接收文件:"+ originalFilename +",文件大小为:"+fileSize+",文件类型为:"+fileType);
            }
        }
        return "成功接收"+files.size()+"个文件!";
    }
}

3.使用apifox发送请求该接口,传入多个文件

如下图,我们要注意几点:

  • 要发送post请求
  • 参数要选择Body->form-data

①思考:为什么发送文件,请求类型一定要选择Post?传参一定要选择Body->form-data?

  • 由于文件只能放到Body中,而Get请求不支持Body传参,所以只能使用Post请求
  • 由于文件上传必须使用 multipart/form-data 编码格式,这是 HTTP/1.1 协议(RFC 7578)规定的标准方式。所以传文件时,参数要选择Body->form-data

②报错原因分析:Maximum upload size exceeded(超过最大上传限制)

上传文件list的场景中,Spring Boot默认值为:

  • 单个文件的大小上限:1MB
  • 单次请求的文件总大小上限:10MB

这是我们上述传的四个文件,可见此时该次请求的总文件大小也就3~4MB,没问题符合要求,但是“双录测试视频.mp4”这个文件,超出了单个文件大小上限(1MB)。因此我们要设置一下这个上限,调大点。

4.配置:调整上传文件的大小限制

如下图,我们此时提高了文件大小的上限:

  • 单个文件大小的上限提升至20MB
  • 单次请求的文件总大小上限提升至50MB

5.再次使用apifox发送请求,传入多个文件

可以去控制台,查看一下上传的日志:

注意:file.getSize()这个方法,获取的文件大小的单位是Byte(即字节)。

二.将接收的文件,保存到本地/服务器

1.添加如下图的两段代码

2.使用apifox,发送请求,测试一下

3.查看本机的指定目录,是否多出了这四个文件

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

到此这篇关于Springboot接口如何接收多个文件以及如何将其保存到服务器的文章就介绍到这了,更多相关springboot接收多个文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • WebFlux 服务编排使用优势详解

    WebFlux 服务编排使用优势详解

    这篇文章主要为大家介绍了WebFlux 服务编排使用优势示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • java中重写equals()方法的同时要重写hashcode()方法(详解)

    java中重写equals()方法的同时要重写hashcode()方法(详解)

    下面小编就为大家带来一篇java中重写equals()方法的同时要重写hashcode()方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • System.currentTimeMillis()计算方式与时间的单位转换详解

    System.currentTimeMillis()计算方式与时间的单位转换详解

    这篇文章主要介绍了System.currentTimeMillis()计算方式与时间的单位转换详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java主线程捕获子线程异常的实现

    Java主线程捕获子线程异常的实现

    本文主要介绍了Java主线程捕获子线程异常的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Java中类转json的基类实现

    Java中类转json的基类实现

    这篇文章主要介绍了Java中类转json的基类实现,需要的朋友可以参考下
    2021-01-01
  • MyBatis代理Dao方式的增删改查的实现小结

    MyBatis代理Dao方式的增删改查的实现小结

    本文主要介绍了MyBatis代理Dao方式的增删改查的实现小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • 我用java实现了王者荣耀的皮肤和英雄技能

    我用java实现了王者荣耀的皮肤和英雄技能

    上篇文章主要实现了创建英雄,创建野怪,创建装备.并且实现了简单的刷怪,购买装备等.本篇文章我优化了我的操作界面,并且实现了英雄技能,英雄皮肤等,需要的朋友可以参考下
    2021-05-05
  • Kafka拦截器的神奇操作方法

    Kafka拦截器的神奇操作方法

    Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafka拦截器的神奇操作,感兴趣的朋友一起看看吧
    2025-01-01
  • 14个编写Spring MVC控制器的实用小技巧(吐血整理)

    14个编写Spring MVC控制器的实用小技巧(吐血整理)

    这篇文章主要介绍了14个编写Spring MVC控制器的实用小技巧(吐血整理),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 深度优先与广度优先Java实现代码示例

    深度优先与广度优先Java实现代码示例

    这篇文章主要介绍了深度优先与广度优先Java实现代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12

最新评论