블로그 이미지
박공명

카테고리

분류 전체보기 (99)
된장 (7)
Dev (60)
꼐..꼐임 (6)
식탐 (18)
우리 (0)
Etc (8)
개인자료 (0)
Total
Today
Yesterday

먼저 스프링 환경변수를 추가한다.

속성은 업로드사이즈 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"

 

 

 

Posted by 박공명
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함