인턴으로 입사한지 4개월만에.... 작지만, 본격 파트 개발을 담당하게 되었다...얏호!
What is the problem?
- 서버에서 업로드되는 다른 영상들은 정상적으로 업로드 되어 다운로드를 눌렀을 때 새 chrome tab에서 재생되는데, 전달받은 코드로 올린 영상은 tab에서 재생되지 않고 다운로드를 해야 재생해볼 수 있다
How did I start?
- 한 이틀 동안 dotenv 패키지 설치와 azure-blob-storage 패키지 버전 때문에 삽질하다가 겨우 실행한 번 해보고, 본격 코드 공부에 들어갔다.
(PYTHON) 프로젝트 별로 가상환경을 나누고, 패키지 이름과 버전을 잘 확인하자!!!
Where to begin
- 우선 어떤 차이가 있는지를 알아보기 위해 두 영상의 속성을 비교해보았다.
- 이게 웬걸? ContentType이 다르다 (video/mp4 v.s application/octet-stream)
- MIME (Multipurpose Internet Mail Extensions)
- "다목적 인터넷 메일 확장"이라는 뜻으로, 웹을 통해 여러 형태의 파일을 전달하는데 사용됨
(이메일과 함께 첨부한 파일을 텍스트 문자로 전환하여 email system으로 전달하기 위해 개발됨)
- 기존의 UUEncode 방식: ASCII 파일만 가능
=> MIME: Binary File(music, movie, word files,..) -> Text File
- Content-type정보를 파일의 앞부분에 담음
특정 content-type의 File은 웹서버로부터 전달 받아 웹브라우저에서 열 수 있다??
1) 웹브라우저에서 서버에 접속하여 html 문서를 요청하여, html 문서에 있는 이미지 경로를 불러옴
2) 이미지의 경로에 있는 파일이 웹브라우저에서 지원되는 MIME Type이라면 웹브라우저로 열어볼 수 있다.
MIME의 TYPE?
- 개별 타입
1) text
- 특정 문자셋으로 구성된 텍스트 정보 or formatted text 정보
ex: text/plain, text/html, text/css, text/javascript
2) multipart
- 모든 종류의 이미지
ex: audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
3) audio
- 모든 종류의 오디오
ex: audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
4) video
- 모든 종류의 비디오
ex: video/webm, video/ogg
5) application
- 모든 Binary Data
ex: application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf
- 멀티파트 타입: 일반적으로 다른 MIME타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리 (합성된 문서를 나타내는 방법)
ex: multipart/form-data, multipart/byteranges
그래서 application/octet-stream이 뭔데?
- 결국 MIME의 개별 타입 중 application에 속하는 타입인디, 8비트 단위의 binary data라는 뜻
- "특별히 표현할 수 있는 프로그램이 존재하지 않는 데이터의 경우 기본값으로 octet-stream을 사용한다." = 브라우저가 보통 자동으로 실행하지 않거나 실행할지 묻기도 하는 타입이다~
- Content-Disposition 헤더를 attachment 로 줌으로써 해당 데이터를 수신받은 브라우저가 파일을 저장 또는 다른이름으로 저장 여부를 설정하게 할 수 있다.
참고: Content-Disposition
- 일반적인 HTTP 응답에서 Content-Disposition 헤더는
- 컨텐츠가 브라우저에 inline되어야 하는 웹페이지 자체 or 일부인지
- attachment로써 다운로드되거나 로컬에 저장될 용도로 쓰이는지
알려주는 헤더
<참고>
https://server-talk.tistory.com/183
https://dololak.tistory.com/130
SVN 커밋 할 때 볼 수 있는 application/octet-stream 가 뭔지 궁금해서 찾아봤는데
정리해주신 글 덕분에 쉽게 이해할 수 있었습니다.
감사합니다!