1. Multipart Message 종류
Message |
정의 |
Mixed |
다른 Content-type 헤더를 갖는 파일을 전송하는데 사용. 메일 클라이언트가 읽기 쉬운 포맷일 경우는 바로 표시고, 그렇지 않으면 첨부파일 형태로 표시. 메일 클라이언트에서 지원해야 할 MIME type임 text/plain |
Digest |
하나 이상의 메시지 포워드시 사용 Message/rfc822 메일 클라이언트에서 지원해야 할 MIME type임. |
Alternative |
동일한 내용을 다른 형식으로 표현 할 때 사용. |
Related |
상호 연관된 여러 개의 파트로 구성. HTML 같은 문서에서 이미지 참조 할 때 뒤따르는 파트를 내부에서 참조. |
Report |
이 메시지 타입은 text/plain과 message/delivery-status로 나뉨. |
Signed |
본문과 서명 포함을 뜻함. |
Encypted |
메시지 타입 암호화 Application/octet-stream와 이를 풀기 위한 제어파트로 구분. |
Form-data |
파일, 비아스키, 데이터, 이진수 데이터 등을 전송할 때 사용. |
2. Content-type : multipart/form-data를 이용한 파일 전송.
장점 : GET 과 POST 보다 더 많은 데이터를 전송할 수 있고, 여러 개의 파일을 한꺼번에 보낼 수 있음.
조건 : multipart/form-data로 전송할 시에는 boundary를 지정해 주어야 함.
Boundary는 지정된 규칙은 존재하지 않음. 단지 맨 마지막 부분에 [Boundary 명]—식으로 하이픈[-]을
두 개 넣어줘야 함.
헤더 구성
è Content-type: multipart/form-data, boundary=12345 [Boundary 명]
바디 구성
è --12345 [Boundary명]
è Content-Diposition:form-data; name=”abc” [파라미터 이름]
è 0000 [파라미터 값]
è --12345 [Boundary명]
è Content-Diposition:form-data; name=”attach_file_name” [파라미터 이름]; filename=”c:\test\123.jpg” [파일 경로]
è Content-type: image/jpeg
è Content-Transfer-Encoding : binary
è ….[파일 바이너리]
è --12345 [Boundary명]--
Body에서의 각각의 파라미터에서의 Content-Disposition 과 Content-type은 헤더 부분과 바디 부분으로 작게 나눠지게 됨.[헤더부분은 파라미터의 속성을 뜻하고, 바디 부분은 데이터의 유형을 나타냄.]
Content-Transfer-Encoding은 Default Encoding(7BIT)과 일치하지 않으면 헤더에서 제공되어야 함.
종류 : 7bit, 8bit, binary, quoted-printable, base64, ietf-token, x-token
참조 : [RFC2045 http://www.ietf.org/rfc/rfc2045.txt]
Content-disposition : 컨텐트 타입의 옵션이기도 하면서, 실제로 지정된 파일명을 지정함으로써 더 자세한
파일의 속성을 알려줄 수 있음.
disposition := "Content-Disposition" ":" disposition-type *(";" disposition-parm)
disposition-type := "inline" / "attachment" / extension-token ; values are not case-sensitive
disposition-parm := filename-parm / creation-date-parm / modification-date-parm / read-date-parm / size-parm / parameter
filename-parm := "filename" "=" value
creation-date-parm := "creation-date" "=" quoted-date-time
modification-date-parm := "modification-date" "=" quoted-date-time
read-date-parm := "read-date" "=" quoted-date-time
size-parm := "size" "=" 1*DIGIT
quoted-date-time := quoted-string ; contents MUST be an RFC 822 `date-time' ; numeric timezones (+HHMM or -HHMM) MUST be used |
Inline : 브라우저 인식 파일 확장자를 가진 파일들에 대해서는 웹브라우저 상에서 바로 파일을 자동으로
보여줄 수 있어서 의미상인 멀티파트 메시지를 표현하는데 있음.
그 외의 파일들에 대해서는 파일 다운로드 대화상자가 나타나도록 하는 헤더 속성임.
Attachment : 브라우저 인식 파일 확장자 구분 없이 모든 파일이 파일 다운로드 시 파일 다운로드
대화상자가 나타나도록 하는 헤더 속성 임.
참조 : [RFC2183 http://www.ietf.org/rfc/rfc2183.txt]
3. Content-type/mixed
헤더 구성
è Content-type: multipart/form-data, boundary=12345 [Boundary 명]
바디 구성
è --12345 [Boundary명]
è Content-Diposition:form-data; name=”abc” [파라미터 이름]
è 0000 [파라미터 값]
è --12345 [Boundary명]
è Content-Diposition:form-data; name=”files”
è Content-type:multipart/mixed; boundary=abcde [Boundary명]
è -- abcde [Boundary명]
è Content-Diposition: attachment; filename=”c:\test\123.jpg” [파일 경로]
è Content-type: image/jpeg
è ….[파일 바이너리]
è -- abcde [Boundary명]
è Content-Diposition: attachment; filename=”c:\test\456.jpg” [파일 경로]
è Content-type: image/jpeg
è ….[파일 바이너리]
è -- abcde [Boundary명]--
è --12345 [Boundary명]--
'안드로이드' 카테고리의 다른 글
adb를 이용해 터치 이벤트 생성 (0) | 2012.11.19 |
---|---|
항상 최상위에 나오는 뷰 만들기2 (팝업 비디오 + Q슬라이드) (0) | 2012.11.13 |
Manifest에서의 exported="false"에 대한 주의점. (0) | 2012.07.13 |
WebViewClient (0) | 2012.07.12 |
Android WireShark TCP dump (0) | 2012.07.12 |