첨부파일 게시판

donnikim·2022년 11월 15일

Spring

목록 보기
7/7

첨부파일 게시판 관련 설정

  • web.xml에 url 추가
  • attm-context.xml에 추가 (뷰만 분리 controller는 board와 같이 사용)

파일 데이터 controller

  • view에서 controller로 데이터를 보낼 시 form태그 안에 enctype="multipart/form-data"가 있어야 인코딩된 상태로 controller단으로 데이터가 넘어온다!

root-context.xml에 파일업로드 관련 객체 등록

라이브러리 commons io와 commons fileupload 등록(pom.xml)

여러개의 파일을 받을 시 ArrayLsit'<'MultipartFile'>'로

save메소드 생성시 맥os와 윈도우os 경로

	public String[] saveFile(MultipartFile file, HttpServletRequest request) {
			
			String root=request.getSession().getServletContext().getRealPath("resources");
			//WEB-INF안에 있는 resources(정적파일관리)를 도달하려고 하는 경로
			
			//윈도우 경로
			//String savePath=root+"\\uploadFiles";
			
			//맥os경로 접근 방법
			String savePath=root+"/uploadFiles";
			
			File folder = new File(savePath);
			
			
			if(!folder.exists()) {
				folder.mkdirs();//폴더가 없으면 폴더를 만들어줘!!
			}
			
			SimpleDateFormat sdf = new SimpleDateFormat("yyyMMddHHmmssSSS");
			//날짜이용하기 위해 simpleDateFormat이용할 거임!!
			
			int ranNum=(int)(Math.random()*100000);
			String originFileName=file.getOriginalFilename();
			String renameFileName=sdf.format(new Date(System.currentTimeMillis()))+ranNum+originFileName.substring(originFileName.lastIndexOf("."));
			//	이름을 다시 지어			ㄴ데이터 업로드된 날짜 및 시간            +        ㄴ랜덤값     + 원본파일에서 가장 마지막 . 뒤에 추츨(파일확장자명 추츨)	
			// 변경된 이름을 파일안에 저장한다!!
			String renamePath=folder+"/"+renameFileName;
			
			try {
				file.transferTo(new File(renamePath));
				
				
			} catch (Exception e) {
				System.out.println("파일 전송 에러: "+e.getMessage());
			}
			String[] returnArr= new String[2];
			returnArr[0]=savePath;
			returnArr[1]=renameFileName;
			
			return returnArr;
			
		}

파일생성시 내가 원하는 경로가 아닌 컴퓨터가 퍼블리싱 해준 곳으로 파일이 생성됨!

  • 퍼블리싱하지 않겠다 클릭
  • 그러면 maven 안에 있는 jstl라이브러리가 먹통이 될것이다.
  • 그러면 WEB-INF안에 lib만들어 주고 dev에 있는 라이브러리 4개 추가해주면 됨!

무결성 제약 조건

  • 사진 여러장을 insert all로 여러개를 데이터로 집어 넣을 예정
  • pk가 insert all에서는 sequence가 nextval이 먹지 않는다.
  • pl/sql시간때 배웠던 sql function기능 이용

0개의 댓글