Обязательная часть запроса 'file' отсутствует] springboot client - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть этот код в клиенте:

          RestTemplate restTemplate = new RestTemplate();
          File file = new File("C:\\temp\\aadocejem.doc");
          MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();

          map.add("file", file);


          String result = restTemplate.postForObject(url+"/doc_file", map, String.class);

И этот код является тем, что вы называете выше:

 @PostMapping("/doc_file")
    public ResponseEntity<File> docFileV1(
        @RequestParam("file") MultipartFile originalDocFile) {

        return ResponseEntity.ok(docFileService.processDocFile(originalDocFile));

    }

Ошибка, которую он дает мне на сервере: Resolved [org " [{"timestamp": "2020-04-23T10: 55: 32.258 + 0000", "status": 400, "error": "Bad Request", "message": "Обязательная часть запроса 'file' отсутствует" " , "trace": "org.springframework.web.multipart.support.MissingServlet ... (5758 байт)]

1 Ответ

1 голос
/ 23 апреля 2020

Это не будет работать с postForObject.

Вместо этого используйте postForEntity:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART__FORM__DATA);

MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", new FileSystemResource(file));

HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.postForEntity(url+"/doc_file", requestEntity, String.class);
...