Spring RestTemplate POST 上传多个文件

Spring RestTemplate POST upload multiple files

假设我有一个如下所示的端点:

  @PostMapping(
      value = "/something",
      consumes = MULTIPART_FORM_DATA_VALUE,
      produces = APPLICATION_JSON_VALUE)
  public SomeDTO post2Files(
      @RequestPart("file1") MultipartFile file1,
      @RequestPart("file2") MultipartFile file2 {

在另一项服务中,我想从文件系统读取一个文件并重新发送它,而 file2 实际上是一个字符串,我想通过 RestTemplate 作为文件传递。 我试过这样的事情:

   HttpHeaders headers = new HttpHeaders();
   headers.setContentType(MediaType.MULTIPART_FORM_DATA);
   MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
   body.add("file1", new FileSystemResource(somePath));
   body.add("file2", new ByteArrayResource(someString.getBytes()));
   restTemplate.postForObject("/something", new HttpEntity<>(body, headers), SomeDTO.class)

它不起作用,我不知道为什么。我得到400。我应该怎么做才能让请求通过?

想通了。 这是解决方案:

body.add("dataSchema", new ByteArrayResource(someString.getBytes()) {
            @Override
            public String getFilename() {
                return "file2";
            }
        });

它没有工作,因为文件名与@RequestPart 不匹配。