본문 바로가기

Study/SpringFramework

08. 텍스트와 바이너리, MIME, Base64 31:40

728x90

7. 텍스트 파일과 바이너리 파일

바이너리 파일(읽을 수 없다면) : 문자와 숫자가 저장되어 있는 파일

텍스트 파일 (읽을 수 있다면): 문자만 저장되어 있는 파일.

 

파일 종류 쓰기 읽기
바이너리 문자 -> 문자
숫자 -> 숫자
문자 -> 문자
숫자 -> 숫자
텍스트 문자 -> 문자
숫자 -> 문자
문자 -> 문자
문자 -> 숫자

- 바이너리 파일은 데이터를 있는 그대로 읽고 쓴다.

- 텍스트 파일은 숫자를 문자로 변환 후 쓴다.

 

텍스트 파일과 바이너리 파일

 

8. MIME(Multipurpose Internet Mail Extensions)

 - 텍스트 기반 프로토콜에 바이너리 데이터 전송하기 위해 고안

 - HTTP의 Content-Type 헤더에 사용. 데이터의 타입을 명시

타입 설명 MIME타입 예시(타입/서브타입)
text 텍스트를 포함하는 모든 문서 text/plain, text/html, text/css, text/javascript
image 모든 종류의 이미지 image/bmp, image/webp
audio 모든 종류의 오디오 파일 audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
video 모든 종류의 오디오 파일 video/webm, video/ogg
application 모든 종류의 이진 데이터 application/octetstream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

 

9. Base64

- 바이너리 데이터를 텍스트 데이터로 변환할 때 사용.

- 64진법은 '0'~'9'(10), 'A'~'Z'(26), 'a'~'z'(26), '+', '/'모두 64개(6bit)의 문자로 구성.

 

이미지 파일을 Base64로 인코팅하면 이런 문자들이 되고.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="data:image/jpeg;base64,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" />
</body>
</html>

해당 내용을 img 요소에 넣어 출력하면.

출력결과

브라우저에 이미지를 출력한다.

 

728x90