使用Spring Boot 2.1.8,我在Rest Controller中使用了两个方法,分别期望一个文件和多个文件。这些是方法的签名。
@PreAuthorize("hasAnyRole('ROLE_ADMIN')")
@PostMapping("/uploadMultipleFiles")
public List<FileResponse> uploadMultipleFiles(@RequestParam("files") MultipartFile[] files);
@PreAuthorize("hasAnyRole('ROLE_ADMIN')")
@PostMapping("/upload")
public FileResponse uploadFile(@RequestParam("file") MultipartFile file);
单个文件的上传工作非常完美。我设法从Web客户端、Postman v7.25.0和Swagger 2加载单个文件。
但是多文件方法只有在从Postman上传文件的时候才有效,返回400http错误代码。因此,它甚至没有进入方法。
两种情况下(web客户端或Swagger)的错误信息都是一样的。
can't parse JSON. Raw result:
Missing or unreadable multipart file in request
这是通过Swagger调用uploadMultipleFiles时的请求头(得到错误)。
这是通过Postman调用uploadMultipleFiles时的请求头(工作正常)。
这是从Postman调用uploadMultipleFiles时的请求头(工作正常)。
首先我认为Content-Type可能与我的问题有关。但是Swagger发送的总是applicationjson,而且在单一上传端点上也能正常工作。
有什么办法吗?
当你使用multipartfile处理文件上传时,你应该将请求的内容类型设置为 multipart/form-data
. 截图显示,邮递员使用的是 multipart/form-data
而不是 application/json
.