스프링 프레임워크에 파일업로드 적용
먼저 스프링 환경변수를 추가한다.
속성은 업로드사이즈 20메가 제한만 두었다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="20000000"></property>
</bean>
두번째 CommonsMultipartResolver 는 스프링 설치시 포함되지 않은 두개의 라이브러리를 요구한다.
http://commons.apache.org/proper/commons-io/
http://commons.apache.org/proper/commons-fileupload/
세번째 컨트롤러에서 파일업로드를 처리한다.
내경우 실제 운영용서버는 라즈베리파이이며 웹서버가 별개이기때문에 파일경로관련하여 각별히 신경써야한다.
내소스 발췌
@RequestMapping(value = "/write.gm", method = RequestMethod.POST)
public String writeBoard(Locale locale, Model model,HttpServletRequest request) {
logger.info("Welcome board write insert!! The client locale is {}.", locale);
String filename = "";
String filenameFront = "";
String filenameExt = "";
String convFilename = "";
FileSystemResource uploadDir = new FileSystemResource("E:/APPLICATION/STS/vfabric-tc-server-developer-2.9.3.RELEASE/base-instance/wtpwebapps/gm_spring_mvc/WEB-INF/uploadfiles/");
//FileSystemResource uploadDir = new FileSystemResource("/var/www/web/uploadfiles/"); //운영시스템용
MultipartHttpServletRequest multipart = (MultipartHttpServletRequest) request;
MultipartFile file = multipart.getFile("fileupload");
if(!file.isEmpty()) {
filename = file.getOriginalFilename();
filenameFront = filename.substring(filename.lastIndexOf("."));
filenameExt = filename.substring(filename.lastIndexOf("."),filename.length());
convFilename = "";
logger.info("OriginalFilename : {}", filename);
logger.info("OriginalFilename front : {}", filenameFront);
logger.info("OriginalFilename ext : {}", filenameExt);
logger.info("uploadDir : {}", uploadDir.getPath());
try {
if(file.getSize() > 0){
File out = new File(uploadDir.getPath() + "/" + Tool.getCurrentDayTimeMill() + filenameExt);
FileCopyUtils.copy(file.getBytes(), out);
convFilename = out.getName();
logger.info("ConvertFilename : {}", out.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
String location = multipart.getParameter("location") == null ? "1" : multipart.getParameter("location");
String stringPage = multipart.getParameter("page") == null ? "" : multipart.getParameter("page");
logger.info("location = {} / page = {}", location,stringPage);
HashMap argument = new HashMap();
argument.put("title", Tool.encodeHTMLSpecialChar(multipart.getParameter("title"), 2));
argument.put("writer", Tool.encodeHTMLSpecialChar(multipart.getParameter("writer"), 2));
argument.put("board_location", location);
argument.put("content", multipart.getParameter("ir1"));
argument.put("password", multipart.getParameter("password"));
argument.put("ori_filename", filename);
argument.put("filename", convFilename);
boardService.insertBoard(argument);
model.addAttribute("location", location);
return board(locale,model,request);
}
마지막으로 화면에서 form 생성시 가장 기본적인 내용.
enctype="multipart/form-data"
'Dev' 카테고리의 다른 글
Java POI Excel 라이브러리 사용하기 (0) | 2014.03.13 |
---|---|
ASCII 코드표 (0) | 2014.02.28 |
스프링 프레임워크에 Spring Security + salt 초간단 적용하기 (0) | 2014.02.13 |
스프링 프레임워크에 네이버 스마트 에디터 , 사진 퀵 업로더 적용하기 (2) | 2014.01.24 |
James Mail Server (1) | 2010.08.24 |