我需要将一个文件与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不支持的媒体类型!
有任何线索吗?
答案 0 :(得分:3)
我找到了解决方案: 我需要使用@RequestParam而不是@RequestPart
@RequestMapping(path = "gopdf", method = RequestMethod.POST, consumes = { "multipart/form-data" })
@ResponseStatus(HttpStatus.OK)
public void handleFileUpload2(@RequestParam("file") MultipartFile file, @RequestParam("map") String jsonMap,
HttpServletResponse response) throws Exceptio
答案 1 :(得分:1)
spring webflux(2.1.0)的multipart / mixed对我不起作用。这是一种可行的替代方法
答案 2 :(得分:0)
它可能与您的请求映射注释有关。我认为缺少accept
值来确定哪些服务可以接受:
示例:
@RequestMapping(path = "gopdf", method = RequestMethod.POST, consumes = { "multipart/mixed" }, accept = MediaType.MULTIPART_FORM_DATA_VALUE)
导入:
import org.springframework.http.MediaType;