이렇게 쓸 필요는 없을 것 같지만... 막 짜본 내용
ㅇ. servlet-context.xml (FormHttpMessageConverter 추가 한다.)
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
</bean>
ㅇ. view 내용
<spring:url value="/test/upload" var="addUrl"/>
<form id="inquiryForm" action="${addUrl}" method="POST" enctype="multipart/form-data" >
<input type="file" name="upload"/>
<input type="submit" id='test'>
</form>
ㅇ. 호출 하는 쪽 Controller (Base64로 file 정보를 encoding한다.)
@RequestMapping(value="/upload", method=RequestMethod.POST)
public void index(@RequestBody MultipartFile upload) throws IOException {
String url = mwDefaultUrl + "/inquiry/testUpload" ;
String encodedString = Base64Helper.encodeToString(upload.getBytes(), false);
formData.add("upload", encodedString);
formData.add("fileName", upload.getOriginalFilename());
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
System.out.println("in web response.getBody[" + response.getBody() + "]");
}
ㅇ. 받는 쪽 Controller(Base64로 decoding한다.)
@RequestMapping(value="/testUpload" , method=RequestMethod.POST )
public @ResponseBody String index(@RequestParam("upload") String encodedString, String fileName, HttpServletRequest httpRequest) {
byte[] upload = Base64Helper.decode(encodedString);
OutputStream out = null;
try {
out = new FileOutputStream("d:\\data\\" + fileName);
out.write(upload);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null)
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "hoho test upload";
}