on
multipart/form-data란?[JSP]
multipart/form-data란?[JSP]
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 모든 문자를 인코딩 하지 않음을 명시
이 방식은요소가 파일이나 이미지를 서버로 전송할 때 주로 사용
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 반환
728x90
from http://pypypy.tistory.com/159 by ccl(A) rewrite - 2021-11-19 14:02:15