File API
ê°ë ë° ì¬ì©ë²
File API를 ì¬ì©íë©´ ì¹ ì í리ì¼ì´ì ì´ íì¼ê³¼ ê·¸ ì½í ì¸ ì ì ê·¼í ì ììµëë¤.
ì¹ ì í리ì¼ì´ì
ì ì¬ì©ìê° íì¼ <input> ìì를 ì¬ì©íê±°ë ëëê·¸ ì¤ë ëë¡ì íµí´ íì¼ì ì¬ì©í ì ìëë¡ ì¤ì íë©´ íì¼ì ì ê·¼í ì ììµëë¤.
ì´ë¬í ë°©ìì¼ë¡ ì ê³µëë íì¼ ì¸í¸ë ì¹ ì í리ì¼ì´ì
ìì ê°ë³ File ê°ì²´ë¥¼ ê²ìí ì ìë FileList ê°ì²´ë¡ íìë©ëë¤. File ê°ì²´ë íì¼ì ì´ë¦, í¬ê¸°, ì í, ë§ì§ë§ ìì ë ì§ ë±ì ë©íë°ì´í°ì ëí ì ê·¼ì ì ê³µí©ëë¤.
File ê°ì²´ë¥¼ FileReader ê°ì²´ì ì ë¬íì¬ íì¼ ë´ì©ì ì ê·¼í ì ììµëë¤. FileReader ì¸í°íì´ì¤ë ë¹ë기ìì´ì§ë§ ì¹ ì커ììë§ ì¬ì©í ì ìë ë기ì ë²ì ì FileReaderSync ì¸í°íì´ì¤ìì ì ê³µë©ëë¤.
ì¸í°íì´ì¤
Blob-
Blobì "ì´ì§ ëì©ë ê°ì²´(Binary Large Object)"를 ëíë´ë©°, í ì¤í¸ ëë ì´ì§ ë°ì´í°ë¡ ì½ê±°ë í´ë¹ ë©ìë를 ì¬ì©íì¬ ë°ì´í°ë¥¼ ì²ë¦¬í ì ìëë¡ReadableStreamì¼ë¡ ë³íí ì ììµëë¤. File-
íì¼ì ëí ì 보를 ì ê³µíê³ ì¹ íì´ì§ì Javascriptê° í´ë¹ ì½í ì¸ ì ì ê·¼í ì ìëë¡ íì©í©ëë¤.
FileList-
<input>ìììfilesìì±ì¼ë¡ ë°íëë©°, ì´ë¥¼ íµí´<input type="file">ììë¡ ì íí íì¼ ëª©ë¡ì ì ê·¼í ì ììµëë¤. ëí ëëê·¸ ì¤ë ëë¡ API를 ì¬ì©í ë ì¹ ì½í ì¸ ì ëì´ë¤ ëì íì¼ ëª©ë¡ìë ì¬ì©ë©ëë¤. ì´ ì¬ì©ë²ì ëí ìì¸í ë´ì©ìDataTransferê°ì²´ë¥¼ 참조íì¸ì. FileReader-
ì¹ ì í리ì¼ì´ì ì´
FileëëBlobê°ì²´ë¥¼ ì¬ì©íì¬ ì½ì íì¼ ëë ë°ì´í°ë¥¼ ì§ì íì¬ ì¬ì©ì ì»´í¨í°ì ì ì¥ë íì¼(ëë ìì ë°ì´í° ë²í¼)ì ë´ì©ì ë¹ë기ì ì¼ë¡ ì½ì ì ìëë¡ í©ëë¤. FileReaderSync-
ì¹ ì í리ì¼ì´ì ì´
FileëëBlobê°ì²´ë¥¼ ì¬ì©íì¬ ì½ì íì¼ ëë ë°ì´í°ë¥¼ ì§ì íì¬ ì¬ì©ì ì»´í¨í°ì ì ì¥ë íì¼(ëë ìì ë°ì´í° ë²í¼)ì ë´ì©ì ë기ì ì¼ë¡ ì½ì ì ìëë¡ í©ëë¤.
ë¤ë¥¸ ì¸í°íì´ì¤ë¡ì íì¥
URL.createObjectURL()-
FileëëBlobê°ì²´ë¥¼ ê°ì ¸ì¤ë ë° ì¬ì©í ì ìë URLì ë§ëëë¤. URL.revokeObjectURL()-
ì´ì ì
URL.createObjectURL()ì í¸ì¶íì¬ ìì±í 기존 ê°ì²´ URLì í´ì í©ëë¤.
ìì
>íì¼ ì½ê¸°
ì´ ìì ììë íì¼ <input> ìì를 ì ê³µíê³ , ì¬ì©ìê° íì¼ì ì ííë©´ ì íí 첫 ë²ì§¸ íì¼ì ë´ì©ì í
ì¤í¸ë¡ ì½ê³ ê·¸ 결과를 <div>ì íìí©ëë¤.
HTML
<input type="file" />
<div class="output"></div>
CSS
.output {
overflow: scroll;
margin: 1rem 0;
height: 200px;
}
JavaScript
const fileInput = document.querySelector("input[type=file]");
const output = document.querySelector(".output");
fileInput.addEventListener("change", async () => {
const [file] = fileInput.files;
if (file) {
output.innerText = await file.text();
}
});
ê²°ê³¼
ëª ì¸ì
| Specification |
|---|
| File API > |
ê°ì´ 보기
<input type="file">: íì¼ input ììtext() method: .text()DataTransferì¸í°íì´ì¤