Spring Rest - 发布多个文件

问题描述 投票:0回答:1

使用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时的请求头(得到错误)。enter image description here

这是通过Postman调用uploadMultipleFiles时的请求头(工作正常)。enter image description here

这是从Postman调用uploadMultipleFiles时的请求头(工作正常)。enter image description here

这是通过Swagger调用上传时的请求头(工作正常)。enter image description here

首先我认为Content-Type可能与我的问题有关。但是Swagger发送的总是applicationjson,而且在单一上传端点上也能正常工作。

有什么办法吗?

java spring model-view-controller multipartform-data spring-rest
1个回答
1
投票

当你使用multipartfile处理文件上传时,你应该将请求的内容类型设置为 multipart/form-data. 截图显示,邮递员使用的是 multipart/form-data 而不是 application/json.

© www.soinside.com 2019 - 2024. All rights reserved.