๐คทโ๏ธ FormData๋?
FormData ์์๋ณด๊ธฐ ์์ ๋จผ์ ํ์ผ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ ์ ์กํ๋ ๊ฒฝ์ฐ์ ์ค์ํ ๊ฐ๋ ์ธ multipart/form-data ์์์ผํ๋ค.
multipart/form-data ๊ฐ๋ตํ ์ ๋ฆฌ:
http ๋ฉ์์ง์ Content-Type ์์ฑ์ด multipart/form-data๋ก ์ง์ ๋๊ณ ์ ํด์ง ํ์์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ์ธ์ฝ๋ฉํ์ฌ ์ ์กํ๋ค.
์ฆ ์ด๋ฏธ์ง, ํ์ผ ๋ฑ์ด png, jpg ํ์ผ ์์ฒด๊ฐ ์ ์ก๋๋ ๊ฒ์ด ์๋๊ณ ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๋ก ์ ์ก๋๋ค.
์ด๋ฏธ์ง, ํ์ผ ๋ฑ์ ์๋ฒ๋ก ๋ณด๋ด์ค๋ FormData ๊ฐ์ฒด๊ฐ ๋ง์ด ์ฌ์ฉ์ด ๋๋ค.
// FormData ๊ธฐ๋ณธ ๋ฌธ๋ฒ
// ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ง์ form ํ๊ทธ๋ฅผ ์์ฑ
let formData = new FormData(); // ์๋ก์ด ํผ ๊ฐ์ฒด ์์ฑ
formData.append('name','yoo'); // ํผ ๋ฐ์ดํฐ๋ฅผ ์คํฌ๋ฆฝํธ๋ก ์ถ๊ฐ
formData.append('age','29'); // <input name="item" value="29"> ์ ๊ฐ๋ค.
formData.append('hobby','soccer'); // <input name="item" value="soccer">
์์ฒ๋ผ FormData ๊ฐ์ฒด์ append() ๋ฉ์๋๋ก key์ value ๊ฐ์ ์ฐจ๋ก๋ก ์ถ๊ฐํด์ฃผ๋ฉด input ํ๊ทธ์ ๊ฐ์ ์ ๋ ฅํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ค.
๊ฐ๋ฐํ๋ฉด์ ์์๋๋ฉด ์ข์ FormData ๋ฉ์๋๋ง ์ ๋ฆฌํด๋ดค๋ค.
formData.append(name, value)
// - form์ name ๊ณผ value ๋ฅผ ํ๋์ ์ถ๊ฐ
// - input์ name ์์ฑ๊ณผ value ์
๋ ฅ๊ฐ ์ญํ ์ ํ๋ค๊ณ ์๊ฐ ํ๋ฉด ๋๋ค.
formData.append(name, blob, fileName)
// - input ์ type ์ด 'file' ์ธ ๊ฒฝ์ฐ์ ์ฌ์ฉ
// - fileName์ file์ ์ด๋ฆ์ ํด๋น
formData.has(name)
// - ์ฃผ์ด์ง name ์ ํด๋นํ๋ ํ๋๊ฐ ์์ ๊ฒฝ์ฐ true, ์์ผ๋ฉด false๋ฅผ ๋ฐํ
formData.get(name)
// - ์ฃผ์ด์ง name ์ ํด๋น ํ๋ ํ๋ value๋ฅผ ๋ฐํ
formData.delete(name)
// - ์ฃผ์ด์ง name ์ผ๋ก ํ๋๋ฅผ ์ ๊ฑฐ
FormData๊ฒฝ์ฐ ํน์ํ ๊ฐ์ฒด ํํ์ด๊ธฐ ๋๋ฌธ์ console.logํน์ FormData ์์ฑ์์ ํ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ์ for๋ฌธ ์ํ๋ฅผ ํด์ FormData์ ํํ๋ฅผ ํ์ธํ ์ ์๋ค.
let formData = new FormData();
formData.append('key1', 'value1');
formData.append('key2', 'value2');
// ํผ ๊ฐ์ฒด key ๊ฐ์ ์ํ.
let keys = formData.keys();
for (const pair of keys) {
console.log(pair);
}
// ํผ ๊ฐ์ฒด values ๊ฐ์ ์ํ.
let values = formData.values();
for (const pair of values) {
console.log(pair);
}
// ํผ ๊ฐ์ฒด key ์ value ๊ฐ์ ์ํ.
let entries = formData.entries();
for (const pair of entries) {
console.log(pair[0]+ ', ' + pair[1]);
}
์ค์ ์ ๊ฐ ์ฌ์ฉํ FormData๋ฅผ ํ์ฉํด์ ์๋ฒ์ ์ ์กํ ๋ ์ฌ์ฉํ ์์ ์ฝ๋ ์ ๋๋ค.
# multipart/form-data ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ ํํ ๊ตฌ์ฑ
const data = new FormData();
data.append('img', images[0]);
data.append('type', 'board');
data.append('service', 'premium');
const result = await axios({
method: 'post',
url: '/papi/file/upload',
data: data ,
headers: {
'Content-Type': `multipart/form-data`,
},
});
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javascript execCommand (๋ณต์ฌ ๊ธฐ๋ฅ) (18) | 2023.02.23 |
---|---|
ํ์ดํ ํจ์ (Arrow Function)๋? (17) | 2022.12.28 |
Javascript์์ false๋ก ๊ฐ์ฃผ๋๋ ๊ฒ๋ค(์์๋๋ฉด ์ ์ฉํ ์ ๋ณด) (7) | 2022.12.13 |
ESLint, Prettier Setting ์ดํดํ๋ฉฐ ์ ๋ฆฌ (21) | 2022.11.30 |
getElementById ๊ทธ๋ฆฌ๊ณ querySelector ์ฐจ์ด์ (7) | 2022.07.30 |