본문으로 바로가기

multipart/form-data란?[JSP]

category 개발/JSP 2021. 11. 19. 13:50
728x90

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

 

MultipartRequest

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

www.servlets.com

이미지를 업로드 할 때, 이미지 설명을 위한 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 반환

 

 

728x90