I. ์๋ก
ํ์ผ ์ ๋ก๋๋ ์น ๊ฐ๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ ์ค ํ๋๋ก, ์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ผ์ ์ ๋ก๋ํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๋ค์ด ์ฌ์ง, ๋์์, ๋ฌธ์ ๋ฑ ๋ค์ํ ํ์ผ ํ์์ ์๋ฒ์ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ์ค์ํ ์์์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ์ผ ์ ๋ก๋๋ ์น ์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๊ณตํ๋ ํผ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์ฌ์ฉ์๋ ์ ๋ก๋ํ ํ์ผ์ ์ ํํ๊ณ , ํด๋น ํ์ผ์ ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์๋ฒ๋ ์ ์ก๋ฐ์ ํ์ผ์ ์ ์ฅํ๊ณ , ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ๊ฑฐ๋ ๋ค์ด๋ก๋ํ ์ ์๋๋ก ํด์ค๋๋ค.
ํ์ผ ์ ๋ก๋๋ ํ๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น ์ง ์ ์๋ ๊ธฐ๋ฅ์ด๋ฉฐ, ์ผํ๋ชฐ, ์์ ๋ฏธ๋์ด, ํ์ผ ๊ณต์ ํ๋ซํผ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ๊ฒ์ ๊ฐ๋ฐ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ด ๊ธ์์๋ ํ์ผ ์ ๋ก๋์ ์ค์์ฑ๊ณผ ์น์์ ํ์ผ ์ ๋ก๋ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ํ์ผ ์ ๋ก๋ ์ ์ฃผ์์ฌํญ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋ํ, ํ์ผ ์ ๋ก๋ ๊ด๋ จ ๊ธฐ์ ๋ํฅ์ ๋ํด์๋ ์ดํด๋ณผ ์์ ์ ๋๋ค. ์ด๋ฅผ ํตํด ํ์ผ ์ ๋ก๋์ ํ์ํ ์ง์์ ์ต๋ํ๊ณ , ์น ๊ฐ๋ฐ์์ ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐ ๋์์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
II. ํ์ผ ์ ๋ก๋์ ์ค์์ฑ
ํ์ผ ์ ๋ก๋๋ ํ๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋งค์ฐ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ๋ค์์ ํ์ผ ์ ๋ก๋์ ์ค์์ฑ์ ๋ํ ๋ช ๊ฐ์ง ์ด์ ์ ๋๋ค.
1. ๋ค์ํ ํ์ผ ํ์ ์ง์
ํ์ผ ์ ๋ก๋๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋ค์ํ ํ์ผ ํ์์ ์๋ฒ๋ก ์ ์กํ ์ ์์ต๋๋ค. ์ฌ์ง, ๋์์, ๋ฌธ์, ์์ ํ์ผ ๋ฑ ๋ค์ํ ํ์์ ํ์ผ์ ์ ๋ก๋ํ์ฌ ์๋ฒ์ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์๋ค์ด ์์ ์ ์ฝํ ์ธ ๋ฅผ ์น ์์ ๋๋์ด ๊ณต์ ํ๊ณ , ๋ค๋ฅธ ์ฌ์ฉ์์ ์ํตํ๋ ๋ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
2. ํ์ผ ๊ณต์ ๋ฐ ํ์
ํ์ผ ์ ๋ก๋๋ ์ฌ๋ฌ ์ฌ์ฉ์ ๊ฐ์ ํ์ผ์ ๊ณต์ ํ๊ณ ํ์ ํ๋ ๋ฐ์๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฌธ์ ๊ณต์ ํ๋ซํผ์์๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ํน์ ๋ฌธ์๋ฅผ ์ ๋ก๋ํ๊ณ ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ค์ ์ค์๊ฐ์ผ๋ก ๋ฌธ์๋ฅผ ๊ณต์ ํ๊ณ ํจ๊ป ์์ ํ ์ ์์ต๋๋ค.
3. ์ฌ์ดํธ ์ฑ๋ฅ ๊ฐ์
ํ์ผ ์ ๋ก๋๋ ์น ์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ์๋ ๋์์ ์ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ ์ ๋ก๋ํ์ฌ ์น ํ์ด์ง์์ ๋์ ์ผ๋ก ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๋ ํ์ด์ง๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ก๋ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ณ , ์น ์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ์ ๋์์ด ๋ฉ๋๋ค.
4. ๋ฐ์ดํฐ ๋ฐฑ์ ๋ฐ ๋ณด์
ํ์ผ ์ ๋ก๋๋ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๋ฐฑ์ ํ ์ ์๋ ์์ ํ ๋ฐฉ๋ฒ์ ๋๋ค. ์์คํ ํ์ผ์ด ์ฌ์ฉ์์ ์ฅ์น์์ ์ ์ค๋๊ฑฐ๋ ์์๋๋ ๊ฒฝ์ฐ์๋ ์๋ฒ์ ์ ๋ก๋๋ ํ์ผ์ ๋ค์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ๋ํ, ์ ์ ํ ๋ณด์ ์กฐ์น๋ฅผ ์ทจํ๋ค๋ฉด ํ์ผ ์ ๋ก๋๋ฅผ ํตํ ๋ฐ์ดํฐ ๋ณด์๋ ๊ฐํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ด์ ๋ค๋ก ์ธํด ํ์ผ ์ ๋ก๋๋ ํ๋์ ์ธ ์น ๊ฐ๋ฐ์์ ์ค์ํ ๊ธฐ๋ฅ์ผ๋ก ์ฌ๊ฒจ์ง๊ณ ์์ผ๋ฉฐ, ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๊ณ ์์ต๋๋ค. ์ด์ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
III. ์น์์ ํ์ผ ์ ๋ก๋ ๋ฐฉ๋ฒ
์น์์ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ค์์ ๋ํ์ ์ธ ํ์ผ ์ ๋ก๋ ๋ฐฉ๋ฒ์ ๋๋ค.
1. HTML Form์ ์ด์ฉํ ํ์ผ ์ ๋ก๋
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ์ผ ์
๋ก๋ ๋ฐฉ๋ฒ์ HTML Form์ ์ด์ฉํ๋ ๊ฒ์
๋๋ค. HTML Form ์์ ์ค <input type="file">
์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ํ์ผ์ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ <form>
์์์ enctype
์์ฑ์ "multipart/form-data"
๋ก ์ค์ ํ์ฌ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋๋ก ํฉ๋๋ค. ์๋ฒ ์ธก์์๋ ์ ์ก๋ฐ์ ํ์ผ์ ์ฒ๋ฆฌํ์ฌ ์ ์ฅํ๊ฑฐ๋ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์์ต๋๋ค.
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload</button>
</form>
์์ ์์ ์์ <form>
์์์ action
์์ฑ์ ํ์ผ์ ์ ์กํ URL์ ์ง์ ํ๊ณ , method
์์ฑ์ HTTP ๋ฉ์๋๋ฅผ ์ง์ ํฉ๋๋ค. <input>
์์์ type
์์ฑ์ "file"๋ก ์ค์ ํ์ฌ ํ์ผ์ ์ ํํ ์ ์๋ ์
๋ ฅ ํ๋๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฒ๋ก ์ ์ก๋๋ ํ์ผ์ name
์์ฑ์ ์ง์ ๋ ์ด๋ฆ์ผ๋ก ์๋ฒ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. AJAX๋ฅผ ์ด์ฉํ ํ์ผ ์ ๋ก๋
AJAX๋ฅผ ์ด์ฉํ์ฌ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ ์๋ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํ์ด์ง ์ ์ฒด๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ํ์ผ์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. AJAX๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ํ์ผ์ ์๋ฒ๋ก ์ ์กํ๊ณ , ์๋ฒ์ ์๋ต์ ๋ฐ์ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ ์ฝํ ์ธ ๋ฅผ ํ๋ฉด์ ํ์ํ ์ ์์ต๋๋ค. AJAX๋ฅผ ์ด์ฉํ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ๋ ค๋ฉด FormData ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํด์ผ ํฉ๋๋ค.
var fileInput = document.getElementById('file-input');
var file = fileInput.files[0];
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// ์
๋ก๋ ์๋ฃ ํ ๋์
console.log(xhr.responseText);
}
};
xhr.send(formData);
์์ ์์ ์์ FormData
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , append()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค. XMLHttpRequest
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , open()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ก๋ํ URL๊ณผ HTTP ๋ฉ์๋๋ฅผ ์ค์ ํฉ๋๋ค. send()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์๋ฒ์ ์๋ต์ onreadystatechange
์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
3. ์๋ฒ ์ฌ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ ํ์ฉ
ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ ๋๋ ์๋ฒ ์ธก์์๋ ์ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ผ์ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ง์ ์น ๊ฐ๋ฐ ์ธ์ด์ ํ๋ ์์ํฌ๋ ํ์ผ ์ ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ฉด ํ์ผ ์ ๋ก๋ ๊ด๋ จ ๋ก์ง์ ์ง์ ๊ตฌํํ๋ ์๊ณ ๋ฅผ ๋ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, Node.js์์๋ multer
๋ผ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์
๋ก๋๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. Django ํ๋ ์์ํฌ์์๋ django.core.files.uploadedfile
๋ชจ๋์ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ธ์ด๋ ํ๋ ์์ํฌ์ ๋ฐ๋ผ ๋ค์ํ ํ์ผ ์
๋ก๋ ์ฒ๋ฆฌ ๋ฐฉ์์ด ์ ๊ณต๋๋ฏ๋ก, ํด๋น ์ธ์ด ๋๋ ํ๋ ์์ํฌ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์ผ ์
๋ก๋๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
๋ค์ํ ํ์ผ ์ ๋ก๋ ๋ฐฉ๋ฒ์ ํ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ผ์ ์ ๋ก๋ํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ํ์ง๋ง ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ ๋๋ ๋ณด์๊ณผ ์ฑ๋ฅ์ ์ฃผ์ํด์ผ ํฉ๋๋ค. ๋ค์ ๋จ๋ฝ์์๋ ํ์ผ ์ ๋ก๋ ์ ์ฃผ์ํด์ผ ํ ์ฌํญ์ ๋ํด ๋ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
IV. ํ์ผ ์ ๋ก๋ ์ ์ฃผ์์ฌํญ
ํ์ผ ์ ๋ก๋๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ๋ฐ๋ผ์ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์์ฌํญ์ ์ผ๋์ ๋์ด์ผ ํฉ๋๋ค.
1. ํ์ผ ํฌ๊ธฐ ์ ํ
ํฐ ํ์ผ์ ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ ์๋ฒ์ ๋คํธ์ํฌ์ ๋ถํ๋ฅผ ์ค ์ ์์ผ๋ฉฐ, ์ ๋ก๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋ํ, ์๋ฒ์ ๋ํ ๊ณต๊ฒฉ์ผ๋ก ์ด์ฉ๋ ์ ์๋ ๋ณด์ ์ทจ์ฝ์ ์ ๋ง๋ค ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ ์ ๋ก๋ ์ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ต๋ ์ ๋ก๋ ๊ฐ๋ฅํ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ฑฐ๋, ํ์ผ ํฌ๊ธฐ๊ฐ ํ์ฉ ๋ฒ์๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ํ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ์๋ฆฌ๋ ๊ฒ์ด ์ข์ต๋๋ค.
2. ํ์ผ ํ์ ๊ฒ์ฆ
์๋ฒ์ ์ ๋ก๋๋ ํ์ผ์ ๋ณด์์์ ์ด์ ๋ก ์ ๋ขฐํ ์ ์๋ ๋ฐ์ดํฐ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ํ์ผ ์ ๋ก๋ ์ ํ์ผ ํ์์ ๊ฒ์ฆํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ํ์ผ์ด ํ์ฉ๋ ํ์์ธ์ง ํ์ธํ๊ณ , ํ์ฉ๋์ง ์์ ํ์ผ์ ์ ๋ก๋๋์ง ์๋๋ก ๋ง์์ผ ํฉ๋๋ค. ํ์ผ ํ์ฅ์๋ MIME ์ ํ์ ํ์ธํ์ฌ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
3. ํ์ผ ์ ์ฅ ๊ฒฝ๋ก ๊ด๋ฆฌ
ํ์ผ ์ ๋ก๋ ์์๋ ์๋ฒ ์ธก์์ ์ ๋ก๋๋ ํ์ผ์ ์ ์ฅํ ๊ฒฝ๋ก๋ฅผ ์ ์คํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์๋ชป๋ ๊ฒฝ๋ก๋ก ํ์ผ์ด ์ ์ฅ๋ ๊ฒฝ์ฐ, ์๋ฒ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ ธ์ถํ๊ฑฐ๋ ๋ค๋ฅธ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค. ์ ๋ก๋๋ ํ์ผ์ ์ ์ฅํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํ ๋๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ ๋๋ ์ ์คํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ ๋ก๋๋ ํ์ผ์ ์ธ๋ถ๋ก๋ถํฐ ์ ๊ทผํ ์ ์๋๋ก ํ์ํ ๋ณด์ ์กฐ์น๋ฅผ ์ทจํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
4. ํ์ผ๋ช ์ค๋ณต ์ฒ๋ฆฌ
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ํ์ผ์ ์ ๋ก๋ํ๋ ๊ฒฝ์ฐ, ์ค๋ณต๋ ํ์ผ๋ช ์ด ์์ฑ๋ ์ ์์ต๋๋ค. ์ค๋ณต๋ ํ์ผ๋ช ์ ํ์ฉํ๋ฉด ํ์ผ์ ์๋ณํ๊ฑฐ๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง ์ ์์ผ๋ฉฐ, ๊ธฐ์กด ํ์ผ์ ๋ฎ์ด์ฐ๊ฑฐ๋ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ํ์ผ ์์คํ ์ ์ค๋ณต๋ ํ์ผ๋ช ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ค๋ณต๋ ํ์ผ๋ช ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํ์ผ๋ช ์ ๊ณ ์ ํ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋, ํ์ผ๋ช ์ ๋ณ๊ฒฝํ์ฌ ์ค๋ณต์ ํผํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
5. ๋ณด์ ์ด์
ํ์ผ ์ ๋ก๋๋ ๋ณด์ ์ทจ์ฝ์ ์ผ๋ก ์ด์ฉ๋ ์ ์๋ ์์์ ๋๋ค. ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ์ ์ฑ ํ์ผ์ ์ ๋ก๋ํ์ฌ ์๋ฒ๋ฅผ ๊ณต๊ฒฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ ์ ๋ก๋ ์ ๋ณด์ ์ด์์ ๋๋นํด์ผ ํฉ๋๋ค. ํ์ผ ์ ๋ก๋๋ ํ์ผ์ ๋ํด ๋ฐ์ด๋ฌ์ค ์ค์บ, ํ์ผ ๋ด๋ถ์ ์คํฌ๋ฆฝํธ๋ ์ ์ฑ ์ฝ๋ ๊ฒ์ฆ ๋ฑ์ ์ํํ์ฌ ๋ณด์์ ๊ฐํํ ์ ์์ต๋๋ค. ๋ํ, ์ ๋ก๋๋ ํ์ผ์ ์ ๊ทผ ๊ถํ์ ์ ์ดํ๊ณ , ์ ๋ก๋ ํด๋๋ฅผ ์น ์๋ฒ์ ๋ถ๋ฆฌํ์ฌ ๋ณด์์ ๋์ฑ ๊ฐํํ ์ ์์ต๋๋ค.
ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํํ ๋์๋ ์์ ์ฃผ์์ฌํญ์ ์ผ๋์ ๋๊ณ , ์ ์ ํ ๋ณด์ ์กฐ์น์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์์ ์ฑ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
V. ํ์ผ ์ ๋ก๋ ๊ด๋ จ ๊ธฐ์ ๋ํฅ
ํ์ผ ์ ๋ก๋ ๊ธฐ์ ์ ์น ๊ฐ๋ฐ ๋ถ์ผ์์ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ๋ค์ํ ๊ธฐ์ ๊ณผ ๋๊ตฌ๊ฐ ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ์๋์์๋ ํ์ผ ์ ๋ก๋ ๊ด๋ จ ๊ธฐ์ ๋ํฅ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. HTML5 File API
HTML5 File API๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ผ์ ์ฝ๊ณ ์กฐ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. FileReader ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ ํ์ผ์ ์ฝ์ ์ ์์ผ๋ฉฐ, File API์์๋ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ(ํ์ผ ํฌ๊ธฐ, ํ์ผ ์ด๋ฆ ๋ฑ)์ ์ ๊ทผํ ์ ์๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ ํ์ผ์ ๋ฏธ๋ฆฌ ๊ฒ์ฆํ๊ฑฐ๋, ํ์ผ์ ๋ถํ ํ์ฌ ๋น ๋ฅด๊ฒ ์ ์กํ ์ ์์ต๋๋ค.
2. AJAX ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ
AJAX๋ฅผ ์ด์ฉํ์ฌ ํ์ผ ์
๋ก๋๋ฅผ ๊ตฌํํ ๋๋ FormData ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์ต๊ทผ์๋ AJAX ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ์์ ํ์ผ ์
๋ก๋๋ฅผ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, jQuery AJAX์์๋ $.ajax()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์
๋ก๋๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
3. ํด๋ผ์ด์ธํธ ์ธก ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง
ํด๋ผ์ด์ธํธ ์ธก์์ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ์ํํ์ฌ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์๋ ๊ธฐ์ ์ด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด ์
๋ก๋๋๋ ์ด๋ฏธ์ง ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ฑฐ๋, ์ด๋ฏธ์ง์ ๊ฐ๋ก ๋ฐ ์ธ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ์น ํ์ด์ง์ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, canvas
์์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฆฌ์ฌ์ด์งํ๋ ๋ฐฉ๋ฒ์ด ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
4. ํ์ผ ์ ๋ก๋ ์ ์ฅ์
ํด๋ผ์ฐ๋ ์๋น์ค ์ ์ฒด๋ค์ ํ์ผ ์ ๋ก๋์ ๊ด๋ จ๋ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด ์๋ฒ์ ์ ๋ก๋๋ ํ์ผ์ ๋ณ๋๋ก ๊ด๋ฆฌํ๊ณ , ํ์ผ์ CDN(Content Delivery Network)์ ํตํด ์ ์กํ์ฌ ๋น ๋ฅธ ์๋๋ก ํ์ผ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ํ, ํ์ผ ์ ๋ก๋ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฒ๋ฆฌ๋์ด ๋ง์ ํ์ผ ์ ๋ก๋ ์์ ์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
5. P2P ๊ธฐ์
Peer-to-Peer(P2P) ๊ธฐ์ ์ ํ์ผ์ ์ง์ ์ ์กํ๋ ๊ธฐ์ ๋ก, ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ฌ์ฉ์ ๊ฐ์ ํ์ผ์ ์ ๋ก๋ํ๊ณ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. P2P ๊ธฐ์ ์ ํ์ฉํ๋ฉด ๋๋์ ํ์ผ์ ๋น ๋ฅธ ์๋๋ก ์ ์กํ ์ ์์ผ๋ฉฐ, ์๋ฒ์ ๋ํ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ํ์ง๋ง P2P ๊ธฐ์ ์ ์ฌ์ฉ์ ๊ฐ์ ์ง์ ์ฐ๊ฒฐ์ด ํ์ํ๋ฏ๋ก ๋ณด์ ์์์ ์ ์ํด์ผ ํฉ๋๋ค.
์์ ๋ํฅ์ ํ์ผ ์ ๋ก๋ ๊ด๋ จ ๊ธฐ์ ์ด ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ์น ๊ฐ๋ฐ์๋ ์๋ก์ด ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ฅผ ํ์ตํ๊ณ ํ์ฉํ์ฌ ์ฌ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ด ์ฐ์ํ ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋๊ธ