Django_multipart/form-data

multipart/form-data

multipart는 MIME type(중요 MIME types)이 각각의 파트로 나누어지는 것을 의미하며 request body에 다양한 Content-type을 담을 때 사용한다. 추가적으로 Content-type 필드에 MIME 타입을 기술해줄 수 있는데, 여러 타입중 하나가 multipart이다. request.FILES['키값']으로 파일들을 통신할 수 있고 request.POST['키값'] 으로 json 데이터를 통신할 수 있다.

File upload process

파일 업로드 구현시, 웹 브라우저 폼을 통해서 파일을 등록하고 전송한다. 웹 브라우저가 보내는 HTTP 메세지는
Content-Type attribute가 multipart/form-data로 지정되며 정해진 형식에 따라 메세지를 인코딩해 전송한다.
이를 처리하기 위한 서버는 multipart 메세지에 대해 각 파트별로 분리해 각각의 파일에 대한 정보를 얻는다.

이미지나 음악파일을 첨부해야 할 때 .jpg ,.flac 파일들이 기존에 다뤘던 데이터들 처럼 파일 자체가 함께 전송된다고 생각했다. 이미지나 오디오 파일도 문자로 이루어져 있기 때문에 스팩에 맞게 문자를 생성해 HTTP request body에 담겨져 서버로 보내지게 되는 것이다.

🚨 내가 생각한 데이터 구조

{
    data : [{
            'music_id': [{ "id" : 1,"username" : "ziy0ung" }],
            'album_title': ['안녕안녕'],
            'album_img': [
            	사진이야,
                나도 사진이야
             ]
           },{
            'music_id': [{ "id" : 1,"username" : "ziy0ung" }],
            'album_title': ['하윙하윙'],
            'album_img': [
            	사진2이야,
                나도 사진2이야
             ]
            }
	]
    }
            	

💡 진짜로 보내지는 데이터 구조

통신할 때 json데이터 키값과 파일들을 담고 있는 키값은 따로 전송해야 한다. 그래서 request.body가 아니라 json data는 request.data로, 파일은 request.FIELS['키값']으로 전달 받을 수 있게 된다.

참조

좋은 웹페이지 즐겨찾기