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 |