728x90
๋ฐ์ํ
โ ์ํ ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ์ํ HTML
<form
id="productInfo"
name="productInfo"
method="post"
onsubmit="return false;"
enctype="multipart/form-data"
>
<table id="product-register-table" style="width: 100%; border: 1px solid black">
<tr>
<td class="text-center">์ํ ์ด๋ฏธ์ง</td>
<td id="imageForm">
<input
id="productImage"
type="file"
onchange="addFile(this);"
multiple
/>
<div class="file-list"></div>
</td>
</tr>
</table>
<button type="submit" class="btn btn-primary">๋ฑ๋ก</button>
</form>
- <form> ํ๊ทธ์ enctype ์์ฑ๊ฐ์ multipart/form-data๋ก ์ง์ ํฉ๋๋ค. โป๋งค์ฐ ์ค์โป
- <input> ํ๊ทธ์ multiple ์์ฑ์ <input> ์์์ ์ฌ์ฉ์๊ฐ ๋ ์ด์์ ๊ฐ์ ์ ๋ ฅํ ์ ์์์ ๋ช ์ํฉ๋๋ค.
- ํ์ผ์ ์ ๋ก๋ ํ๊ธฐ ์ํด์๋ <input> ํ๊ทธ์ type ์์ฑ๊ฐ์ file๋ก ์ง์ ํฉ๋๋ค.
โ ์ด๋ฒคํธ๋ฆฌ์ค๋ ์ด์ฉ์ ์ํ <button> ํ๊ทธ
<button type="submit" class="btn btn-primary">๋ฑ๋ก</button>
โ Fetch API & FormData๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ์ Request ์ ๋ฌ
<script>
var myForm = document.getElementById('productInfo');
// <button> ํด๋ฆญ ์ด๋ฒคํธ
myForm.addEventListener('submit', function (e) {
e.preventDefault();
var formData = new FormData();
for (let i = 0; i < filesArr.length; i++) {
// ์ญ์ ๋์ง ์์ ํ์ผ์ผ ๊ฒฝ์ฐ
if (!filesArr[i].is_delete) {
formData.append('files', filesArr[i]);
}
}
fetch('http://localhost:8080/product', {
// post ๋ฐฉ์
method: 'post',
headers: {},
body: formData,
})
// response.text() ๋ฉ์๋๋ก ํ์ฑํ text ๊ฐ ๋ฆฌํด
.then(function (response) {
return response.text();
})
// ๋ฆฌํด๋ฐ์ text ๊ฐ์ ๋ฐ์ ์ํ๋ ์ผ์ ์ํ
.then(function (data) {
console.log(data);
})
// error ์ฒ๋ฆฌ
.catch(function (error) {
console.log(error);
});
});
</script>
- fetch() ํจ์๋ ์ฒซ๋ฒ์งธ ์ธ์๋ก URL, ๋๋ฒ์งธ ์ธ์๋ก Option ๊ฐ์ฒด๋ฅผ ๋ฐ๊ณ , Promise ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํฉ๋๋ค. URL์ ํ์ ๋งค๊ฐ๋ณ์ ์ ๋๋ค.
- ๋ฐํ๋ ๊ฐ์ฒด๋, API ํธ์ถ์ด ์ฑ๊ณตํ์ ๊ฒฝ์ฐ response ๊ฐ์ฒด๋ฅผ resolveํ๊ณ , ์คํจํ์ ๊ฒฝ์ฐ error ๊ฐ์ฒด๋ฅผ reject ํฉ๋๋ค.
โ ๋ค์คํ์ผ ์ ๋ก๋์ ๊ดํ ๋ด์ฉ์ ํด๋น ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค.
'Frontend > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ์ค์ฝํ(Scope)๋ ๋ฌด์์ธ๊ฐ? (0) | 2022.09.05 |
---|---|
[JavaScript] ํด๋ก์ ๋ ๋ฌด์์ธ๊ฐ? (0) | 2022.09.02 |
[JavaScript] ๋ฌธ์์ด ์นํ( replace(), split().join() ) (0) | 2022.08.19 |
[JavaScript] input ํ๊ทธ disabled ์์ฑ์ ์ด์ฉํ ๋ฒํผ ํ์ฑํ/๋นํ์ฑํ (0) | 2022.05.15 |
[JavaScript] ํ์ฌ ์๊ฐ๊ณผ ๋น๊ตํด ๋จ์ ์๊ฐ ๊ตฌํ๊ธฐ(์ผ, ์, ๋ถ, ์ด) (2) | 2022.05.02 |