이렇게 쓸 필요는 없을 것 같지만... 막 짜본 내용

ㅇ. servlet-context.xml (FormHttpMessageConverter 추가 한다.)

  <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
    <list>
    <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
    <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
    <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
    <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
    </list>
    </property>
    </bean>

    <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";

    }



Posted by 파이팅야
,