HTTP 프로토콜은 txt 기반 전송 프로토콜이다. 

하지만 HTTP 프로토콜을 사용하여 이미지, 동영상 파일을 보내기도 하는데 이것이 어떻게 가능한 것 일까?

 

바이너리 파일이란?

  • 텍스트 파일과는 다르게 문자와 숫자로 저장되어 있는 파일
  • 동영상, 이미지 파일, 음성 파일이 바이너리 파일에 속한다. 
  • 따라서 해당 종류의 파일을 단순한 txt 편집기로 열게 된다면 숫자 부분이 깨져서 표시가 된다.

<방법>

1. MIME 타입을 쓰고 바이너리 파일을 그대로 넣는 방법

MIME 이란 (Multipurpose Internet Mail Extensions)의 약어이며 
전송할 데이터의 타입과 서브타입을 명시하는 것을 말한다.
ex: text/htiml, image/bmp, audio/wav, video/webm, application//pdf 

2. Base64 인코딩을 사용하여 바이너리 파일을 텍스트 파일로 변환하여 보내는 방법

64비트 체계로 변환하여 사용하는 것 (6비트씩 끊어서 문자 하나로 변환)
어떤(OS)의 인코딩이든 6비트의 해당 문자 체계는 존재한다.
따라서 OS가 달라도 2^6 64진법을 사용하면 안전하게 변환이 가능하다.
단 인코딩의 종류에 따라서 문자 하나의 크기가 다를 수 있는데.
UTP-8에서는 영문자, 숫자가 1byte(8비트) 임으로 6비트 -> 8비트로
(데이터의 양이 늘어나는 단점이 있다.)

2-1 활용 예시:

HTML파일에서 이미지 파일의 링크가 깨지더라도 Base64 인코딩 방법을 사용하면 안전하게 이미지 파일 전송 가능

해당 HTML 파일 같은 경우 같은 경로에 text.png가 존재 하여야 함

하지만 다음과 같이 태그 내용을 수정하고 뒤에 해당 이미지 파일을 Base 64로 인코딩한 내용을 붙여주면

해당 경로에 사진 파일이 존재하지 않아도 제대로 해당 이미지가 나타남을 알 수 있다.

'Development > Spring' 카테고리의 다른 글

URL 패턴  (0) 2023.01.20
Spring의 4개의 저장소  (0) 2023.01.19
웹과 HTTP 프로토콜  (0) 2023.01.06
클라이언트와 서버  (0) 2023.01.05
Spring 원격 프로그램과 데이터 주고(request) 받기 (response)  (0) 2023.01.04

+ Recent posts