웹 & 프레임워크

spring을 이용한 파일 업로드

늘근이 2014. 5. 8. 13:32

파일업로드를 하기 위해서는 

http://commons.apache.org

에 올려져있는 FileUpload, IO두개의 라이브러리를 받으면 된다. (기본으로 들어있지 않기 때문에..) 


commons-fileupload-1.3.1-bin.zip

commons-io-2.4-bin.zip


다른 버전도 있으므로 확인해서 받는게 좋다



commons-fileupload-1.3.1.jar

commons-io-2.4.jar


밑에건 압축을 푼 버전이다.


이 라이브러리를 WEB-INF/lib 안에 고이 넣어준다. 

주의할점은, hibernate-validator-5.0.0.CR2.jar / validation-api-1.0.0.GA.jar 는 오류가 날수 있으니 빼준다.


폼의 형식은 다음과같이 멀티파트로 하고, input요소는 file로 한다.


이렇게 하고,

스프링 - 컨트롤러에 가서는 매개변수를 MultipartFile image 이런식으로, 매개변수형식과 이름을 맞춰준다.


그리고 자바에서 다음과 같이 함수를 참고한다





        //@RequestParam("message")는 어차피 String 매개변수 이름이 같으니 생략해도된다.
	//request는 contextPath를 알아내기 위해 매개변수로 받는데, 이는 스프링이 지원하는 기능이다.
	@RequestMapping(value={"/register.do"},method=RequestMethod.POST)
	public String regist(@RequestParam("message")String message, MultipartFile image,HttpServletRequest request,Model model) throws Exception{
		
		//실제 물리적인 그 주소가 온다.
		String saveDir = request.getServletContext().getRealPath("/images");
		image.transferTo(new File(saveDir + "/" + image.getOriginalFilename()));
		
		model.addAttribute("message",message);
		model.addAttribute("fileName", image.getOriginalFilename());
		
		return "confirm";
	}