You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring控制器接收MultiValueMap类型@RequestPart参数,Postman能否调用?

问题:Spring多文件上传控制器的Postman请求构造问题

我开发了一个用于多文件上传的Spring控制器,希望将所有文件封装为MultiValueMap<FilesUploadEnum, MultipartFile>对象作为@RequestPart参数,而非逐个定义MultipartFile类型的@RequestPart参数。

FilesUploadEnum为文件类型枚举,示例代码如下:

public enum FilesUploadEnum {
    CUSTOMER_CONSENT,
    CUSTOMER_COMPLAINT,
    CUSTOMER_REGISTRATION
    ...;
}

控制器代码如下:

@PostMapping(path = "/file",
             consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public @ResponseBody ResponseEntity<Void> saveFiles(
              @RequestPart(value = "attached_files")
              MultiValueMap<FilesUploadEnum, MultipartFile> files) {
    // 处理逻辑
}

我已设置请求头Content-Type: multipart/form-data,但无法在Postman的form-data中正确构造attached_files部分。请问能否用Postman构造该控制器可接收的请求?是否需要更换其他客户端工具?


解决方案

完全可以用Postman构造符合要求的请求,不需要更换工具,具体操作步骤如下:

  • 请求基础配置:设置请求方法为POST,填写正确的接口URL;无需手动设置Content-Type请求头,当你在Body选择form-data时,Postman会自动生成正确的multipart/form-data头信息(包含boundary)。
  • 构造form-data参数:在Body标签下选择form-data类型,然后逐个添加文件参数:
    • 对于每个文件,将Key设置为attached_files[枚举值],比如要上传CUSTOMER_CONSENT类型的文件,Key填attached_files[CUSTOMER_CONSENT],类型选择File,然后选择对应的本地文件。
    • 如果需要给同一个枚举类型上传多个文件,只需重复添加Key为attached_files[相同枚举值]的条目,再选择另一个文件即可,Spring会自动将同枚举值的文件收集为MultiValueMap中的列表。
  • 发送请求:配置完成后直接发送请求,Spring会自动将这些文件映射到MultiValueMap<FilesUploadEnum, MultipartFile>参数中,枚举值作为Key,对应的文件列表作为Value。

比如你要上传一个客户同意书和两个客户投诉文件,form-data的Key分别是:

  • attached_files[CUSTOMER_CONSENT](对应一个文件)
  • attached_files[CUSTOMER_COMPLAINT](对应第一个投诉文件)
  • attached_files[CUSTOMER_COMPLAINT](对应第二个投诉文件)

这样控制器就能正确接收并解析所有文件。


内容的提问来源于stack exchange,提问作者John Garez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:12:12