当前位置: 首页 > news >正文

Springboot接口如何接收多个文件?如何将其保存到服务器?一文详解

目录

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

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

2.代码编写

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

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

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

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

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

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

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

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

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


一.接收多个文件(即接收文件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.查看本机的指定目录,是否多出了这四个文件

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

http://www.jsqmd.com/news/894818/

相关文章:

  • AI应用可观测性实战:Opik开源工具助力MLOps全链路监控与优化
  • 2026年比较好的低温蒸发结晶/低温蒸发浓缩设备/低温蒸发浓缩装置推荐厂家精选 - 行业平台推荐
  • spring有多个对象时如何注入
  • 2026年质量好的刷式自清洗过滤器/上海前置过滤器/保安过滤器多家厂家对比分析 - 品牌宣传支持者
  • 玩转AI智能体:从零开始构建你的第一个AI Agent,小白也能轻松上手!
  • IBM和南卡罗来纳大学的实验让答题准确率飙升28个百分点
  • 新手小白Java学习日记
  • 2026年质量好的滚丝机/进口滚丝机/东莞滚丝机品牌厂家推荐 - 行业平台推荐
  • 不掉卡、不宕机:主流 GPU 租用平台稳定性对比
  • 2026年4月热门的摇摆筛源头厂家推荐分析,无尘投料站/真空上料机/混合机/摇摆筛/不锈钢筛网,摇摆筛厂商推荐 - 品牌推荐师
  • 从功能、体验出发,深度解析主流 SaaS 建站平台优劣
  • 主动学习数据集划分
  • 大模型面试题,终于有LeetCode版了
  • 解决本地AI智能体遗忘问题:从上下文管理到向量记忆的完整方案
  • 2026年质量好的儿童护眼落地大路灯/钢琴大路灯/客厅护眼大路灯/婴幼儿阅读大路灯深度厂家推荐 - 品牌宣传支持者
  • Vibe Coding实战:话术长短无关效率,工程规范才是落地核心
  • 【高录用|线上召开|国家级人才主讲】2026年航空航天与智能制造国际学术会议(ICoAIM 2026)
  • 移动开发十年变革:从原生到跨端,开发者能力模型重塑与实战指南
  • AI Agent+MES融合实施手册(含OPC UA协议级对接checklist与异常代码速查表)
  • 2026年热门的苏州低温蒸发装置/低温蒸发浓缩装置优质公司推荐 - 行业平台推荐
  • Unity Recorder保姆级教程:从Timeline录制到独立窗口录屏,一次搞定所有格式
  • 基于贝叶斯Tucker分解的无监督特征选择:原理、实现与应用
  • 基于VoIPBin与AI构建智能IVR系统:从架构设计到工程实践
  • 从《最后生还者Online》取消看游戏开发项目管理与技术决策
  • 云知声U2即将发布:小参数大能量,能否填平估值差?
  • 2026年千亿「孤独经济」背后,情感陪伴平台正在改变什么?
  • 2026年口碑好的喷雾加湿设备/喷雾除尘设备/景观喷雾机/佛山喷雾机长期合作厂家推荐 - 品牌宣传支持者
  • LinkSwift:5分钟掌握八大网盘直链下载的终极解决方案
  • 30+北漂程序员,2个月零基础转行大模型,程序员如何抓住AI风口
  • 从X11到Wayland:一个Linux桌面开发者的迁移实战与避坑指南