spring restTemplateを使用してRestControllerにMultipartFileのリストを投稿しようとしていますが、正確な構文については少し混乱しています。&私のクライアント&コントローラ。ここで私は今のところ...私がやった研究にSpring 4でマルチパートファイルのリストをアップロードするrestTemplate(Java Client&RestController)
FileUploadClient.java
public void uploadFiles(List<MultipartFile> multiPartFileList) throws IOException {
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
List<Object> files = new ArrayList<>();
for(MultipartFile file : multiPartFileList) {
files.add(new ByteArrayResource(file.getBytes()));
}
map.put("files", files);
// headers is inherited from BaseClient
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
ResponseEntity<String> response = restTemplate.exchange(restURI + "/rest/fileupload/uploadfiles", HttpMethod.POST, request, String.class);
if(HttpStatus.OK.equals(response.getStatusCode())) {
System.out.println("status for /rest/fileupload/uploadfiles ---> " + response);
}
}
FileUploadRestController.java
@RequestMapping(value = "/uploadfiles", method = RequestMethod.POST)
public ResponseEntity<?> uploadFiles(@RequestParam("files") List<MultipartFile> files, HttpServletRequest request) {
ResponseEntity<?> response;
try {
// do stuff...
response = new ResponseEntity<>(header, HttpStatus.OK);
System.out.println("file uploaded");
} catch (Exception e) {
// handle exception
}
return response;
}
のweb.xmlをベースとしているものです
<filter>
<filter-name>multipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>multipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
春-servlet.xml私はそれを正しく理解していれば
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- max upload size in bytes -->
<property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
<!-- max size of file in memory (in bytes) -->
<property name="maxInMemorySize" value="1048576" /> <!-- 1MB -->
</bean>
。マルチパートフィルタは、私のMultiValueMapをList of MultipartFilesとMultipartHttpServletRequestに解析する必要がありますか? クライアントにRestControllerを命中させる唯一の方法は、ファイルデータをByteArrayResourceとして送信することですが、私のコントローラでは、私のRequestBodyは常にnullで、MultipartHttpServletRequestはmultipartFiles属性の空のマップを持っています。私は、この問題を解決しようとするために多くの投稿を見てきましたが、役に立たなかったのです。どんな助けでも大歓迎です。
、私の残りのコントローラは、もはやヒットなかっなりました。コントローラの中でクライアントと '@RequestParam(" files ")List
私はその地図にも注意する必要があります。put( "ファイル"、ファイル); 'Map>型のput(String、List )メソッドのput(String、List
ええ、それはいいです。 'List