gpt4 book ai didi

java - 如何使用 Spring 在 1 个请求中获取 MultiPart 文件和表单数据?

转载 作者:行者123 更新时间:2023-11-30 07:09:55 25 4
gpt4 key购买 nike

我有下面这个 Controller :

@RequestMapping(value="/upload", method=RequestMethod.PUT)
public ResponseEntity<String> handleFileUpload(
@RequestParam("file") MultipartFile file,
@RequestBody Campaign inputCampaign,
Principal principal) {

只要我没有 @RequestBody Campaign inputCampaign(它是一个保存用户视频数据的对象,并且会上传视频并将其保存到正确的目录),它就可以正常工作。

但是,我想在 1 个请求中获取他们上传的文件以及与其营销 Activity 相关的表单数据,这样我就可以保存有关其营销 Activity 的相关信息(例如标题、描述等)。

当我尝试使用上面的 Controller ,并尝试在 Postman 中发送请求时,出现以下错误:

  "timestamp": 1473349676109,
"status": 415,
"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'multipart/form-data;boundary=----WebKitFormBoundaryTVc9eDC2a2elulOx;charset=UTF-8' not supported",
"path": "/dashboard/upload"

这是我的 postman 请求设置:

Postman Request

如何在一次请求中发送营销 Activity 表单数据和文件? Activity 对象有很多字段,因此我不想将 @RequestParam 放入每个表单字段的 Controller 参数中。 Jackson 应该自动映射属性。

最佳答案

jack 。

您是否尝试删除这两个注释?

出于演示目的,我做了一个简单的映射,如下所示:

@PutMapping("/file/{fileName}")
@ResponseBody
public String[] postFile(
@PathVariable(name = "fileName") String fileName,
List<MultipartFile> files,
User user
) throws IOException {
return new String[]{
fileName,
user.getUsername(),
files.stream()
.map((f)-> f.getOriginalFilename())
.reduce("", (e, f)->e.concat(f).concat(", "))
};
}

我尝试将一些文件上传到 List<MultipartFile> files .

Sample output from Postman

如图所示,filesuser数据自动映射,无需任何注释。

希望有帮助。

关于java - 如何使用 Spring 在 1 个请求中获取 MultiPart 文件和表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com