2016-09-06 1 views
1

こんにちは私は2つの別々のアプリを持っています。Restテンプレートでファイルを送信すると、MultipartFileがヌルです

最初のものはPOSTリクエストを送信している: 私は、これはポスト要求

@RequestMapping(value = "/fileupload/save", method = RequestMethod.POST, produces = "text/plain") 
@ResponseBody 
public String save(@RequestParam(value = "file", required = false) MultipartFile file, @RequestParam(required = false) Boolean suggestTranspose, @RequestParam(value = "transformers", required = false) String transformersString, @RequestParam(required = false) Integer brandId) throws Exception { 
..... 
} 

しかし、中に取得された第二のアプリである第二のアプリに

public static String httpPostMultipartFile(String url, File file) throws IOException{ 
    RestTemplate restTemplate = new RestTemplate(); 
    MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>(); 
    parameters.add("file", file); // load file into parameter 
    HttpHeaders headers1 = new HttpHeaders(); 
    headers1.setContentType(MediaType.MULTIPART_FORM_DATA); 
    String result = restTemplate.exchange(
      url, 
      HttpMethod.POST, 
      new HttpEntity<MultiValueMap<String, Object>>(parameters, headers1), 
      String.class 
     ).getBody(); 
    return result; 

をファイルを送信しようとしています私の2番目のアプリMultipartFileは、残りの呼び出しから実際にはnullです

私はこのリンクを発見したhavntは私を助けました link 1

link 2

答えて

2

あなたhttpPostMultipartFile方法は、以下のようにする必要があります。

public static String httpPostMultipartFile(String url, File file) throws IOException{ 
    RestTemplate restTemplate = new RestTemplate(); 
     MultiValueMap<String, Object> multipartMap = new LinkedMultiValueMap<String, Object>();  
     multipartMap.add("file", new FileSystemResource(file.getPath())); 
     HttpHeaders headers = new HttpHeaders(); 
     headers.setContentType(MediaType.MULTIPART_FORM_DATA); 
     HttpEntity<Object> request = new HttpEntity<Object>(multipartMap, headers);   
     String result = restTemplate.exchange(
       url, 
       HttpMethod.POST, 
       request, 
       String.class 
      ).getBody(); 

     return result; 
} 
関連する問題