1.     Multipart Message 종류

Message

정의

Mixed

다른 Content-type 헤더를 갖는 파일을 전송하는데 사용.

메일 클라이언트가 읽기 쉬운 포맷일 경우는 바로 표시고, 그렇지 않으면 첨부파일 형태로 표시.

메일 클라이언트에서 지원해야 할 MIME typetext/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-EncodingDefault 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]--

 

+ Recent posts