Spring mvc SpringRestTemplate:如何同时发布文件和公共字符串数据
我满足了使用spring resttemplate上载文件的请求 对于http头文件“multipart/form data”,还需要发布一些其他正常参数。如何实现这一点?您可以使用此代码Spring mvc SpringRestTemplate:如何同时发布文件和公共字符串数据,spring-mvc,resttemplate,Spring Mvc,Resttemplate,我满足了使用spring resttemplate上载文件的请求 对于http头文件“multipart/form data”,还需要发布一些其他正常参数。如何实现这一点?您可以使用此代码 HttpHeaders headers = getCASHeaders(MediaType.MULTIPART_FORM_DATA); LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>
HttpHeaders headers = getCASHeaders(MediaType.MULTIPART_FORM_DATA);
LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("fileField", new FileSystemResource(""));//get file resource
params.add("stringfield", stringPayload);
HttpEntity requestEntity = new HttpEntity<>(params, headers);
ResponseEntity<CasAssetApiResponse> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
HttpHeaders=getCASHeaders(MediaType.MULTIPART\u FORM\u DATA);
LinkedMultiValueMap参数=新建LinkedMultiValueMap();
params.add(“fileField”,新文件系统资源(“”)//获取文件资源
参数添加(“stringfield”,stringPayload);
HttpEntity requestEntity=新的HttpEntity(参数、头);
ResponseEntity response=restemplate.exchange(url,HttpMethod.POST,requestEntity,String.class);
这将发送两个参数的post呼叫,您可以根据自己的意愿添加更多参数
请同时查看此代码您可以使用此代码
HttpHeaders headers = getCASHeaders(MediaType.MULTIPART_FORM_DATA);
LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("fileField", new FileSystemResource(""));//get file resource
params.add("stringfield", stringPayload);
HttpEntity requestEntity = new HttpEntity<>(params, headers);
ResponseEntity<CasAssetApiResponse> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
HttpHeaders=getCASHeaders(MediaType.MULTIPART\u FORM\u DATA);
LinkedMultiValueMap参数=新建LinkedMultiValueMap();
params.add(“fileField”,新文件系统资源(“”)//获取文件资源
参数添加(“stringfield”,stringPayload);
HttpEntity requestEntity=新的HttpEntity(参数、头);
ResponseEntity response=restemplate.exchange(url,HttpMethod.POST,requestEntity,String.class);
这将发送两个参数的post呼叫,您可以根据自己的意愿添加更多参数
请也查看一下您可以在应用程序中使用以下代码同时使用multipartfile和普通请求参数。
- 将url替换为您自己的url
- 根据正常参数替换参数和值
stringurl=”http://example.com"; String fileAbsPath=“文件的绝对路径”; 字符串fileName=新文件(fileAbsPath).getName(); Files.readAllBytes(path.get(fileAbsPath)); 多值映射数据=新的LinkedMultiValueMap(); ByteArrayResource资源=新的ByteArrayResource(Files.readAllBytes(path.get(fileAbsPath))){ @凌驾 公共字符串getFilename(){ 返回文件名; } }; 数据。添加(“文件”,资源); HttpHeaders requestHeaders=新的HttpHeaders(); requestHeaders.set(“文件”、“应用程序/pdf”); UriComponentsBuilder=UriComponentsBuilder.fromHttpUrl(url) .queryParam(“参数1”、“值1”) .queryParam(“参数2”、“值2”) HttpEntity实体= 新的HttpEntity(数据、请求头); RestTemplate RestTemplate=新RestTemplate(); ResponseEntity结果=restTemplate.exchange( builder.string(), HttpMethod.POST, 实体, 字符串(类); System.out.println(result.getBody());
- 将url替换为您自己的url
- 根据正常参数替换参数和值
stringurl=”http://example.com"; String fileAbsPath=“文件的绝对路径”; 字符串fileName=新文件(fileAbsPath).getName(); Files.readAllBytes(path.get(fileAbsPath)); 多值映射数据=新的LinkedMultiValueMap(); ByteArrayResource资源=新的ByteArrayResource(Files.readAllBytes(path.get(fileAbsPath))){ @凌驾 公共字符串getFilename(){ 返回文件名; } }; 数据。添加(“文件”,资源); HttpHeaders requestHeaders=新的HttpHeaders(); requestHeaders.set(“文件”、“应用程序/pdf”); UriComponentsBuilder=UriComponentsBuilder.fromHttpUrl(url) .queryParam(“参数1”、“值1”) .queryParam(“参数2”、“值2”) HttpEntity实体= 新的HttpEntity(数据、请求头); RestTemplate RestTemplate=新RestTemplate(); ResponseEntity结果=restTemplate.exchange( builder.string(), HttpMethod.POST, 实体, 字符串(类); System.out.println(result.getBody());
但是这样,“stringfield”的值是一个LinkedList,而不是一个字符串….,他们的api可以识别这个值….但是这样,“stringfield”的值是一个LinkedList,而不是一个字符串….,他们的api可以识别这个值….这不是问题的答案。这不是问题的答案。我也有这个问题,我试过了,但我发现:原因:org.apache.tomcat.util.http.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界我也有这个问题,我尝试了它,但得到:由:org.apache.tomcat.util.http.fileupload.FileUploadException引起:请求被拒绝,因为找不到多部分边界