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

目录

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

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

2.代码编写

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

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

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

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

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

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

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

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

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


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

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

2.代码编写

java 复制代码
@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.查看本机的指定目录,是否多出了这四个文件

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

相关推荐
十年Java程序媛8 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
for_ever_love__10 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
SL_staff11 小时前
设备越多系统越崩?根源在三层抽象失效
spring boot·物联网·github
威哥爱编程11 小时前
【AI全栈12-01】Spring Boot 为何是 AI 全栈后端优选
java·spring boot·后端
威哥爱编程11 小时前
【AI全栈12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·spring boot·后端
威哥爱编程11 小时前
【AI全栈12-02】Spring Boot 跑通第一个 AI 对话接口:HR 政策问答机器人实战
java·spring boot·后端
m0_5873830011 小时前
深圳 24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·小程序·架构·需求分析
企业数字化笔记13 小时前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
huaweichenai14 小时前
spring boot对接阿里短信
java·spring boot
马剑威(威哥爱编程)14 小时前
【AI全栈后端12-08】Spring Boot 用 MCP 统一接入内部系统:让 AI 接一次,全公司复用
java·人工智能·spring boot