multipart/form-data에 대해서 아려면 우선 form을 먼저 알아야한다.
form은?
입력 양식 전체를 감싸는 태그입니다.
form은 컨트롤 요소(control element)로 구성됩니다.
- name : form의 이름, 서버로 보내질 때 이름의 값으로 데이터 전송
- action : form이 전송되는 서버 url 또는 html 링크
- accept-charset : form 전송에 사용할 문자 인코딩 지정
- target : action에서 지정한 url혹은 html링크의 동작방식을 설정
- method : 전송 방법 설정. get은 default, post 3가지가 있고 post 데이터를 url에 공개하지 않고 숨겨서 전송하는 방법
- autocomplete : 자동 완성. on으로 하면 form 전체에 자동 완성 허용
- enctype : 폼 데이터(form data)가 서버로 제출될 때 해당 데이터가 인코딩되는 방법을 명시합니다.
속성값 | 설명 |
application/x-www-form-urlencoded | 기본값, 모든 문자들은 서버로 보내기 전에 인코딩 됨을 명시하고 enctype표현을 안할 시 기본적으로 적용 |
multipart/form-data | 모든 문자를 인코딩 하지 않음을 명시 이 방식은<form>요소가 파일이나 이미지를 서버로 전송할 때 주로 사용 method가 post일 때만 사용가능 |
text/plain | 공백 문자(space)는 "+" 기호로 변환하지만, 나머지 문자는 모두 인코딩 되지 않음을 명시 |
Multipart의 존재 이유
- multipart/form-data 공식문서
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html
이미지를 업로드 할 때, 이미지 설명을 위한 input, 이미지를 위한 input 이 있다고 가정할 경우에,
이미지 설명을 위한 input의 Content-type은 application/x-www-form-urlencoded 이고
이미지를 위한 input의 Content-type은 image/jpeg 이다.
전혀 다른 데이터가 HTTP Request Body에 포함되어 전송되는데 그것을 분류하는것이 multipart타입이다.
Multipart 객체
MultipartRequest multi = new MultipartRequest(request, savePath, sizeLimit, "utf-8", new DefaultFileRenamePolicy());
파라미터
- HttpServletRequest request = request 객체
- String saveDirectory = 저장될 서버 경로
- int maxPostSize = 파일 최대 크기
- String encoding = 인코딩 방식
- FileRenamePolice policy = 같은 이름 파일명 방지 처리(파일명뒤에 숫자가 하나씩 증감하는 식으로 표현됨. 원하는 표현이 필요한경우 config편집이 필요)
Multipart 메소드
getContentType(java.lang.String name) | 업로드된 파일의 ContentType 반환, 업로드된 파일이 없으면 null반환 |
getFile(java.lang.String name) | 서버 상에 업로드된 파일의 파일 객체를 반환, 업로드된 파일이 없다면 null반환 |
getFileNames(java.util.Enumeration) | 폼 요소 중 input태그 속성이 file로 된 파라미터의 이름들을 반환, upload된 파일이 없으면 비어있는 Enumeration을 반환 |
getFileSystemName(java.lang.String name) | 사용자가 지정해서 서버 상에 실제로 업로된 파일명 반환 |
getOrignalFileName(java.lang.String name) | 사용자가 지정해서 서버상에 업로드된 파일명을 반환, 이때의 파일명은 파일중복을 고려한 파일명 변경전의 이름을 말한다 |
getParameter(java.lang.String name) | 스트링으로 주어진 이름에 대한 값을 반환, 값 없이 파라미터가 전송되었거나 해당괴는 이름의 파라미터가 전송이 안 되었을 경우 null반환 |
getParameterName(java.util.Enumeration) | 모든 파라미터 이름을 Enumeration으로 반환 |
getParameterValues(java.lang.String name) | 주어진 이름에 대한 값을 스트링 배열로 반환, 파라미터가 전송되지 않았을 경우 null 반환 |
'개발 > JSP' 카테고리의 다른 글
웹페이지 이미지 저장 하기[JSP] (0) | 2021.11.19 |
---|---|
현재 내 웹페이지 경로 확인하기[JSP] (0) | 2021.11.19 |
[JSP] DecimalFormat 천단위 콤마, .jsp에서 출력하기 (0) | 2021.08.23 |
[JSP][mysql][mariadb] 다중 쿼리 입력하기 (0) | 2021.08.09 |
[JSP] 접속/접속자 IP 확인하기 (0) | 2021.08.09 |