Spring Boot 1.5.7使用RestTemplate上传文件和params

时间:2017-11-15 06:12:42

标签: spring-mvc upload resttemplate

我对Springboot很熟悉。我正在创建这个基于微服务的架构,我正在尝试使用RestTemplate来使用这个文件上传服务。

服务端API代码基本上是

@PostMapping("/upload")

public ResponseEntity<?> fileUpload(@RequestParam String appender, 
                           @RequestParam("file") MultipartFile file) {
 ...
}

现在在客户端     @覆盖     public String attachFile(String id,MultipartFile file){
        字符串状态= null;
        HttpHeaders headers = new HttpHeaders();         headers.setContentType(MediaType.MULTIPART_FORM_DATA);

    MultiValueMap<String, Object> upParams = new LinkedMultiValueMap<String, 
                                                 Object>();
    upParams.add("appender", id);
    upParams.add("file", file.getOriginalFilename());

    HttpEntity<MultiValueMap<String, Object>> request = 
            new HttpEntity<MultiValueMap<String, Object>>(upParams, headers);

    String response = restTemplate.postForObject(uploadEndPoint, request, 
                                                     String.class);
    return status;  
}

我收到此错误

org.springframework.web.client.HttpServerErrorException: 500 

如果我将线路改为下面      upParams.add(&#34; file&#34;,file);

我收到错误

&#34;无法编写JSON:找不到类java.io.FileDescriptor的序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:没有为类java.io.FileDescriptor找到序列化器,也没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链:org.springframework.web) .multipart.support.StandardMultipartHttpServletRequest $ StandardMultipartFile [\&#34;的inputStream \&#34;] - &GT; java.io.FileInputStream中[\&#34; FD \&#34;])

0 个答案:

没有答案