๐Ÿ“ฆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ `Blob`, `File`, `ArrayBuffer` ์™„๋ฒฝ ์ •๋ฆฌ

YEONGHUN KOยท2025๋…„ 5์›” 28์ผ
0

JAVASCRIPT - BASICS

๋ชฉ๋ก ๋ณด๊ธฐ
28/29
post-thumbnail

heicํŒŒ์ผ์„ jpeg๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์•Œ๊ฒŒ๋œ ์ƒˆ๋กœ์šด ์šฉ์–ด๋“ค์ด ์žˆ์–ด์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

๐Ÿ”น 1. Blob (Binary Large Object)

โœ… ๊ฐœ๋…

  • Blob์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์˜ ๋ฉ์–ด๋ฆฌ์ด๋‹ค.
  • ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ๋น„๋””์˜ค, ํ…์ŠคํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ๊ธฐ ์ „์šฉ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด FileReader, fetch().blob(), URL.createObjectURL() ๋“ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

โœ… ์ƒ์„ฑ ์˜ˆ์‹œ

const blob = new Blob(["Hello, world!"], { type: "text/plain" });

๐Ÿ”น 2. File

โœ… ๊ฐœ๋…

  • File์€ Blob์„ ์ƒ์†ํ•œ ๊ฐ์ฒด์ด๋‹ค.
  • Blob์˜ ๋ฐ์ดํ„ฐ ์™ธ์—๋„ ํŒŒ์ผ๋ช…, MIME ํƒ€์ž…, ์ตœ์ข… ์ˆ˜์ •์ผ ๊ฐ™์€ ๋ฉ”ํƒ€์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
  • ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์—…๋กœ๋“œ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

โœ… ์ƒ์„ฑ ์˜ˆ์‹œ

const file = new File(["Hello, world!"], "hello.txt", { type: "text/plain" });

๐Ÿ”น 3. ArrayBuffer

โœ… ๊ฐœ๋…

  • ArrayBuffer๋Š” ๊ณ ์ • ๊ธธ์ด์˜ ์›์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„ํผ์ด๋‹ค.
  • ๋‹จ๋…์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์—†๊ณ , TypedArray (Uint8Array, Float32Array ๋“ฑ)์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ์ •๋ฐ€ํ•œ ์ด์ง„ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์— ์ ํ•ฉํ•˜๋‹ค.

โœ… ์ƒ์„ฑ ์˜ˆ์‹œ

const buffer = new ArrayBuffer(8); // 8๋ฐ”์ดํŠธ์งœ๋ฆฌ ๋ฒ„ํผ
const view = new Uint8Array(buffer);
view[0] = 255;

๐Ÿ”„ Blob, File, ArrayBuffer ๊ฐ„์˜ ๊ด€๊ณ„

๊ด€๊ณ„์„ค๋ช…
File โ†’ BlobFile์€ Blob์„ ์ƒ์†ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.
Blob โ†” ArrayBufferBlob์˜ ๋ฐ์ดํ„ฐ๋ฅผ ArrayBuffer๋กœ ์ฝ๊ฑฐ๋‚˜, ArrayBuffer๋ฅผ Blob์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์‹œ 1: Blob โ†’ ArrayBuffer

const blob = new Blob(["Hello"]);
blob.arrayBuffer().then(buffer => {
  console.log(new Uint8Array(buffer)); // [72, 101, 108, 108, 111]
});

๐Ÿ“Œ ์˜ˆ์‹œ 2: ArrayBuffer โ†’ Blob

const buffer = new ArrayBuffer(5);
const view = new Uint8Array(buffer);
view.set([72, 101, 108, 108, 111]); // "Hello"
const blob = new Blob([buffer], { type: "text/plain" });

๐Ÿง  ์ •๋ฆฌ

๊ฐ์ฒดํ•ต์‹ฌ ์—ญํ• ์ฃผ์š” ์šฉ๋„
Blob๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ฌถ์Œ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ, ํŒŒ์ผ ์ƒ์„ฑ ๋“ฑ
File์ด๋ฆ„๊ณผ ๋ฉ”ํƒ€์ •๋ณด๊ฐ€ ์žˆ๋Š” Blob์‚ฌ์šฉ์ž ์—…๋กœ๋“œ ํŒŒ์ผ
ArrayBuffer๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ด์ง„ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ์ •๋ฐ€ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฒ˜๋ฆฌ, Web APIs

์ด 3๊ฐ€์ง€ ๊ฐœ๋…์„ ์กฐ๊ธˆ๋” ์‘์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์˜์ƒ์„ ์ฐธ์กฐ ํ•  ๊ฒƒ

profile
'๊ณผ์—ฐ ์ด๊ฒŒ ์ตœ์„ ์ผ๊นŒ?' ๋Š์ž„์—†์ด ์ƒ๊ฐํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€