Spring
[Spring] JSON 이용한 FileUpload
별토끼.
2017. 7. 28. 16:51
반응형
[Spring] JSON 이용한 FileUpload
- FileUpload
1.
mybatis , mybatisSpring, springJDBC, 파일업로드처리하는 commons
lib폴더에 넣는 것이 아닌 pom.xml에 넣어서 자동 다운로드되도록 한다.
- 다운로드가 되면 Maven Dependencies에 담긴다.
2.
servlet-context 설정 추가
1 2 3 4 5 6 7 8 9 | <!-- Multipart 폼 전송을 처리하기 위한 bean --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10240000"/> </bean> <!-- --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="0"/> </bean> | cs |
3.
dao, dto, controller, service, view 패키지 생성
4.
fileDto생성
5.
fileDao 인터페이스 생성 및 fileDaoImpl생성
-FileDaoImpl
6.
Configuration - typeAlias설정하고 Mapper 설정하기
7.
FileService Interface, FileService Impl 생성
8.
component-scan 할 수 있도록 servlet-context에 등록
9.
fileController
1 2 3 4 5 | @RequestMapping("/file/insertform") public String insertform(){ return "file/insertform"; } | cs |
10.
11.
cf> new file 생성시 메뉴에 jsp파일 보이도록 하기
12.
insertform.jsp
13.
MultipartType pom.xml에 commonsIO/servletcontext.xml 에 bean이 있어야 동작이 이루어진다.
14.
fileController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @RequestMapping("/file/insertform") public String insertform(){ return "file/insertform"; } @RequestMapping("/file/insert") public String insert(HttpServletRequest request, @ModelAttribute FileDto dto){ //FileService 객체를 통해서 업로드 처리를 한다. fileService.insert(request, dto); //파일 목록 보기로 리다일렉트 이동 시킨다. return "redirect:/file/list.do"; } | cs |
15.
fileServiceImpl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | @Override public void insert(HttpServletRequest request, FileDto dto) { //파일을 저장할 폴더의 절대 경로를 얻어온다. String realPath=request.getSession() .getServletContext().getRealPath("/upload"); System.out.println(realPath); //MultipartFile 객체의 참조값 얻어오기 //FileDto 에 담긴 MultipartFile 객체의 참조값을 얻어온다. MultipartFile mFile=dto.getFile(); //원본 파일명 String orgFileName=mFile.getOriginalFilename(); //파일 사이즈 long fileSize=mFile.getSize(); //저장할 파일의 상세 경로 String filePath=realPath+File.separator; //디렉토리를 만들 파일 객체 생성 File file=new File(filePath); if(!file.exists()){//디렉토리가 존재하지 않는다면 file.mkdir();//디렉토리를 만든다. } //파일 시스템에 저장할 파일명을 만든다. (겹치치 않게) String saveFileName=System.currentTimeMillis()+orgFileName; try{ //upload 폴더에 파일을 저장한다. mFile.transferTo(new File(filePath+saveFileName)); }catch(Exception e){ e.printStackTrace(); } //FileDto 객체에 추가 정보를 담는다. dto.setOrgFileName(orgFileName); dto.setSaveFileName(saveFileName); dto.setFileSize(fileSize); //FileDao 객체를 이용해서 DB 에 저장하기 fileDao.insert(dto); } | cs |
16.
dao
1 2 3 4 5 6 | @Override public void insert(FileDto dto) { session.insert("file.insert", dto); } | cs |
17.
mapper
1 2 3 4 5 6 | <insert id="insert" parameterType="fileDto"> INSERT INTO board_data (num, writer, title, orgFileName, saveFileName, fileSize, regdate) VALUES(board_data_seq.NEXTVAL, #{writer}, #{title}, #{orgFileName}, #{saveFileName}, #{fileSize}, SYSDATE) </insert> | cs |
같은 방식으로 list, delete구현
반응형