
blob vs file vs arraybuffer ์ด ๊ธ์ ์ด์ด ๊ถ๊ธ์ฆ์ด ์๊ฒจ์ ์ ์ด๋ณด์๋ค.
Blob๊ณผ FormData๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ผ ๋ฐ ๋ฐ์ดํฐ ์ ์ก ์ ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ๋ชฉ์ ๊ณผ ์ญํ ์ด ๋ค๋ฅด๋ค.
| ํญ๋ชฉ | Blob | FormData |
|---|---|---|
| ๐ ์ ์ฒด | ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ๋ฉ์ด๋ฆฌ | HTML form์ ์๋ฎฌ๋ ์ด์ ํ๋ ํค-๊ฐ ์์ ์ปฌ๋ ์ |
| ๐ ํ์ | ํ์ผ, ์ด๋ฏธ์ง, ํ ์คํธ ๋ฑ ์ด์ง ๋ฐ์ดํฐ | ํ ์คํธ ๋ฐ์ดํฐ, ํ์ผ ๋ฑ ํผ ์ ๋ ฅ๊ฐ |
| ๐ค ์ฉ๋ | ํ์ผ, ์ด๋ฏธ์ง ๋ฑ ์ ์ก ๋๋ ๋ก์ปฌ ์ ์ฅ | ์๋ฒ์ ํผ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฃผ๋ก ์ฌ์ฉ |
| ๐ฆ ๋ด๋ถ ๊ตฌ์กฐ | ํ๋์ ๋ฉ์ด๋ฆฌ (stream ๊ฐ๋ฅํ ์ด์ง ๋ฐ์ดํฐ) | ์ฌ๋ฌ ๊ฐ์ ํ๋ (multipart/form-data๋ก ์ ์ก) |
| ๐ ๊ด๊ณ | Blob ๊ฐ์ฒด๋ฅผ FormData์ ์ฒจ๋ถํ ์ ์์ | FormData๋ Blob์ ํ๋์ ํ๋๋ก ํฌํจํ ์ ์์ |
Blob ์์const blob = new Blob(["Hello World"], { type: "text/plain" });
// blob ์์ฒด๋ ์๋ฌด key๋ฅผ ๊ฐ์ง์ง ์์, ๊ทธ๋ฅ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ผ
FormData ์์ + Blob ์ถ๊ฐconst blob = new Blob(["Hello World"], { type: "text/plain" });
const formData = new FormData();
formData.append("myTextFile", blob, "hello.txt");
// ์๋ฒ๋ก ์ ์ก
fetch("/upload", {
method: "POST",
body: formData, // Content-Type: multipart/form-data
});
Blob์ ๋ฐ์ดํฐ ๊ทธ ์์ฒดFormData๋ ์๋ฒ ์ ์ก์ ์ํ ์ปจํ
์ด๋FormData๋ Blob ๋๋ File์ ํ๋๋ก ํฌํจ ๊ฐ๋ฅ
Blob์ ๊ทธ๋ฅ ํ์ผ ํ๋์ด๊ณ ,
FormData๋ ํ๋ฐฐ ์์์ด๋ค.
์์ ์์Blob์ด๋File, ํ ์คํธ ๊ฐ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํฌ์ฅํด์ ์๋ฒ๋ก ๋ณด๋ด๋ ์ฉ๋์ด๋ค. ๐ฆ๐ค