当前位置: 首页 > 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.zskr.cn/news/1399519.html

相关文章:

  • 基于RAG与LangChain构建防幻觉股票研究智能体:从数据管道到工程实践
  • AI应用可观测性实战:Opik开源工具助力MLOps全链路监控与优化
  • 2026年质量好的刷式自清洗过滤器/上海前置过滤器/保安过滤器多家厂家对比分析 - 品牌宣传支持者
  • 从零构建本地语音AI助手:架构设计、模型选型与实战优化
  • IBM和南卡罗来纳大学的实验让答题准确率飙升28个百分点
  • 主动学习数据集划分
  • 【高录用|线上召开|国家级人才主讲】2026年航空航天与智能制造国际学术会议(ICoAIM 2026)
  • 从PCF到K8s:企业级PaaS平台迁移实战与架构演进
  • 从《最后生还者Online》取消看游戏开发项目管理与技术决策
  • OpenAI 这个模型推翻离散几何猜想,说明 AI 已经开始碰基础数学的硬问题
  • 548个免费浏览器工具集:纯前端实现、零成本运维与开发者生产力实践
  • 解决 TensorBoard 启动报错:ModuleNotFoundError: No module named ‘pkg_resources‘
  • 影像技术实战21:视频关键帧提取重复、黑屏、模糊?FFmpeg + OpenCV 构建可解释的关键帧筛选方案
  • 大模型PII保护实战:5种方法109次测试,量化隐私与性能的权衡
  • 2026年靠谱的自动化精密工业设备零部件/精密工业设备零部件公司哪家好 - 行业平台推荐
  • 【限时解密】Lovable上线前72小时压测报告原文:千万级并发心跳包下的WebSocket集群熔断策略与自动降级清单
  • 新手小白Java学习日记
  • 2026年口碑好的防堵雾化喷头/佛山人造雾设备厂家推荐与选型指南 - 品牌宣传支持者
  • 别让Simulink仿真慢成蜗牛!手把手教你用Solver Profiler揪出性能瓶颈
  • 不止于水:用Obi Fluid和Unity粒子系统,打造从粘稠蜂蜜到喷泉烟雾的创意特效
  • 不止于画图:用嘉立创EDA封装管理器,高效管理你的个人元件库(以QFP、SOP封装为例)
  • Bloom(泛光):让画面“发光“的魔法,藏在每一束阳光背后的秘密
  • 如何解锁NVIDIA显卡隐藏性能:免费开源工具NVIDIA Profile Inspector终极指南
  • TypeScript与Zapier SDK构建智能HubSpot公司信息补全工作流
  • AI工程实践:从实验室到生产系统的治理、MLOps与风险控制
  • 从零构建548个免费Web工具:极简架构、自动化与性能优化实战
  • C51开发中PRECEDE指令导致的内存重叠问题解析
  • <<哈希表迭代器函数>>
  • 学生用户画像-考勤主题扩展标签构建、可视化实验文档
  • LinkSwift:5分钟掌握八大网盘直链下载的终极解决方案