해당 글은 공부하는 과정을 기록하기 위한 포스팅이며 다음 글을 통해 계속해서 수정이 이루어 질 예정입니다.
완성된 코드가 아니며, 오류가 발생할 수 있으니 복사 및 참고 용으로 사용하지 않기를 권장합니다.


진행 목표

  • 사진 첨부 기능 (페이지상 구축)
  • DB 반영 체크
  • 저장 목록 페이지 반영
  • 사진 다운로드 기능
  • 1개 게시물 다중 사진 업로드
  • 앨범형 게시판목록



cos.jar을 이용하여 사진 업로드 하기

  • http://servlets.com/ 접속
  • COS File Upload Library 메뉴 선택
  • 다운로드 항목 zip파일 다운 (2022.06.25 기준 cos-22.05.zip)
  • lib 폴더에 있는 cos.jar 파일을 내 프로젝트 lib에 복사

메인 등록 창 (디자인 없이 창만 임시 구현)

(생략)
	<script type="text/javascript">
		function validateForm(form) {
			if(form.name.value == ""){
				alert("작성자를 입력하세요.")
				form.name.focus();
				return false;
			}
			if(form.title.value == ""){
				alert("제목을 입력하세요.")
				form.title.focus();
				return false;
			}
			if(form.attachedfile.value == ""){
				alert("첨부파일 선택은 필수입니다.")
				form.attachedfile.focus();
				return false;
			}
		}
	</script>
</head>
<body>
	<h3>파일 업로드</h3>
	<span style="color:red;'"></span>
	<form action="UploadProcess.jsp" name="fileForm" method="post" 
    enctype="multipart/form-data" onsubmit="return validateForm(this)">
	작성자 : <input type="text" name="name" value="기본작성자" /><br />
	제목 : <input type="text" name="title" /><br />
	옵션 :	<input type="checkbox" name="cate" value="선택1" checked="checked" /> 선택1
	<input type="checkbox" name="cate" value="선택2" /> 선택2
	<input type="checkbox" name="cate" value="선택3" /> 선택3
	<input type="checkbox" name="cate" value="선택4" /> 선택4<br />
	첨부파일 : <input type="file" name="attachedfile"><br />
	<input type="submit" value="전송하기">
	</form>
  • <scrip> 구문 : 입력하지 않은 값이 있다면 돌아가기
    (onsubmit 함수에서 false값이 리턴되면 action이 실행되지 않음
  • type=”file” accept 속성을 지정하지 않으면 모든 유형의 파일을 입력 받을 수 있음 타입을 지정하고자 할 때는 <input type=”file” accept=”유형1, 유형2, 유형3 …” 으로 지정할 수 있음.
    다만 이는 파일 선택 시 보이는 부분이며 .(모든파일) 항목을 선택한다면 다른 속성을 강제로 제한하지는 않음.

  • multipart/form-data : 클라이언트가 form 태그를 통해 파일을 등록하고 서버로 제출할 때 인코딩 되는 방식 enctype의 속성값 중 하나.
    enctype 속성은 method 속성값이 post 일 때만 사용할 수 있기에
    multipart/form-data도 당연히 method 값이 post일 때만 사용 가능

    보통 HTTP Request는 한가지의 타입 종류이기에 Content-type도 타입도 하나만 지정되었음.
    (일반적으로 submit을 통해 전달되는 데이터는 ‘application/x-www-form-urlencoded’)

    하지만 파일을 업로드 할 때에는 사진과 함께 사진의 설명을 올리는 경우가 있기 때문에
    form으로 전달 시 두 가지의 input 타입이 각각 달라 질 수 밖에 없었고
    따라 다중 종류를 구분해서 HTTP Request Body에 넣어주는 방법이 필요했기에 multipart가 등장함

multipartRequest 클래스

public multipartRequest(HttpServletRequest request,   // request 객체
                                        String saveDirectory,       // 파일이 저장 될 경로
                                        int maxPostSize,            // 파일의 최대 크기
                                        String encoding)            // 인코딩 방식

Updated: