MissingServletRequestPartException: необходимая часть запроса 'file' отсутствует Springboot - PullRequest
0 голосов
/ 11 января 2020

У меня есть контроллер, который выполняет загрузку файлов, я пытаюсь отправить запрос на конечную точку контроллера из другого сервиса.

@RequestMapping(path = "/upload/{id}", method = RequestMethod.POST)
    public String uploadBaseImage(@RequestParam("data") String imageData, @RequestParam("file") MultipartFile file,@PathVariable("id") String id)
            throws Exception {
        String imageUrl = feedHandler.UploadAndSetImageUrl(imageData, file,Integer.parseInt(id));
        return imageUrl;
    }

Код, откуда я вызываю вышеуказанную конечную точку

public SupplierFeedResponse uploadBaseFeedImage(String data, MultipartFile file, String supplierId) throws IOException {
        String uploadBaseFeedEndpoint = uploadFeedEndpoint+Constants.FEED_SERVICE_BASE_FEED_UPLOAD_URI+supplierId;
        SupplierFeedResponse supplierFeedResponse =  new SupplierFeedResponse();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
        body.add("file", new ByteArrayResource(file.getBytes()));
        body.add("data", data);

        log.info("Request body : "+body.toString());

        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.postForEntity(uploadBaseFeedEndpoint, requestEntity, String.class);
        return supplierFeedResponse;

    }

Я получаю следующую ошибку, не знаю причину:

[MissingServletRequestPartException: Required request part 'file' is not present]

Некоторое время оглядывался без решения.

1 Ответ

0 голосов
/ 11 января 2020

Возможно, в вашем запросе отсутствует параметр " file ", поэтому вы должны учитывать параметр " file " внутри своего запроса. Также вы можете добавить новый атрибут ( обязательный ) внутри @RequestParam, например @ RequestParam (value = "file", required = false) . Назначение атрибута " required ", чтобы сделать параметр запроса обязательным (если true) или необязательным (если false).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...