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
, ํ ์คํธ ๊ฐ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํฌ์ฅํด์ ์๋ฒ๋ก ๋ณด๋ด๋ ์ฉ๋์ด๋ค. ๐ฆ๐ค