我需要将一个文件与一个 json 一起发送到我的 Spring Controller。我有以下控制器类:
@Controller
@RequestMapping("/perform")
public class PerformController {
...
@RequestMapping(path = "gopdf", method = RequestMethod.POST, consumes = { "multipart/mixed" })
@ResponseStatus(HttpStatus.CREATED)
public void handleFileUpload(@RequestPart("file") MultipartFile file, @RequestPart("map") String map, HttpServletResponse response) throws Exception {
...
}
}
但是当我使用以下命令在我的服务器上卷曲时:
curl -H "Content-Type: multipart/form-data" -F "map=@map.json; type=application/json" -F "content=@SMP.docx" -X POST localhost:9000/perform/gopdf-i -v
我得到 415 不支持的媒体类型!
有什么线索吗?
原文由 ElArbi 发布,翻译遵循 CC BY-SA 4.0 许可协议
其他答案中的消耗东西对我来说并没有做废话。关键是将我想要支持的特定 multipart/* 类型添加到 RequestMapping 中的某些标头键上。这真的很难弄清楚,主要是猜测工作并盯着 Spring 源代码。我对 Spring 对此的支持有点不知所措,但我已经设法让它在我们的 Spring Boot 应用程序中工作,但仅限于 Tomcat?!?当您将引导应用程序配置为使用 Jetty 时,称为 MultipartResolver 的东西会阻塞……所以长 Jetty。但我离题了…
在我的控制器中,我设置了 multipart/mixed 或 multipart/form-data 之类的……
标题的东西让它唯一地识别它愿意尝试的多部分内容类型。这让卷发像……
…或者…
工作。