带有文件和json对象的Spring multipart / form-data

时间:2019-08-13 18:44:40

标签: json spring spring-boot postman

我正在尝试在单个请求中上传文件和json对象。基本上,我们要求用户上载证书时,不应将其存储在数据库或文件系统中。应该立即处理并将其丢弃。

我创建了可以接受multipart / form-data的API。

尝试了几种使用@ RequestParam,@ RequestBody和wrapper将JSON对象解析为String的方法

我的控制器看起来像下面的片段

@RequestMapping(value = "v2/loadbalancers", method = RequestMethod.POST)
@ApiOperation(value = "Create load balancer", notes = "Create load balancer", produces = MediaType.APPLICATION_JSON_VALUE)
@Authorized(rolesAllowed = {Roles.ALL})
public ResponseEntity<ResponseObject<LoadBalancerResponse>> submitCreateVipRequest(HttpServletRequest request,
                                                                                       @RequestParam(value = "lbRequest", required = false) String lbRequest,
                                                                                       @RequestParam(value = "cert", required = false) MultipartFile certificate,
                                                                                       @RequestParam(value = "key", required = false) MultipartFile key){
        System.out.println("Debug line");
        return null;
}

在Spring Controller中,我能够看到文件,但是json或字符串内容为null。如果我设置

@RequestParam(value = "lbRequest", required = true) String lbRequest

邮递员控制台中的标题看起来像

POST /cloudgateway/network/v2/loadbalancers
Authorization: eyJhbGciOiJIUzUxMiJ9......omitted
Content-Type: multipart/form-data; boundary=--------------------------050647545435114222268928
cache-control: no-cache
Postman-Token: bb9e957e-05b5-46d1-ad02-0348cf051a5c
User-Agent: PostmanRuntime/7.4.0
Accept: */*
Host: 10.70.227.127:8080
accept-encoding: gzip, deflate
content-length: 254686
lbRequest={"lbRequest": "value"}cert=[object Object]key=[object Object]
HTTP/1.1 200
status: 200
Node-Name: R72
X-Request-ID: e7cf3dfdb479af44617686f59e997f49:617686f59e997f49:0:0
Content-Length: 0
Date: Tue, 13 Aug 2019 23:55:05 GMT
Proxy-Connection: keep-alive
Connection: keep-alive

抛出缺少的servletrequestparameterexception-“不存在必需的字符串参数'lbRequest'” 我正在使用Postman表单数据进行测试,并且在关键字段中具有文本类型。

我的问题类似于 MissingServletRequestParameterException

我尝试了

之类的几种选择

Spring Controller @RequestBody with file upload is it possible?

Spring @RequestParam on multipart/form-data

0 个答案:

没有答案
相关问题