夿³¨ï¼ æ¤ç¹æ§å¨ Web Worker ä¸å¯ç¨ã
æ¦å¿µåç¨æ³æä»¶ API ä½¿å¾ web åºç¨å¯ä»¥è®¿é®æä»¶åå ¶ä¸çå 容ã
å½ç¨æ·æä¾æä»¶æ¶ï¼Web åºç¨å¯ä»¥éè¿ä½¿ç¨æä»¶ <input>
å
ç´ æææ¾æ¥è®¿é®å®ä»¬ã
以è¿ç§æ¹å¼æä¾çæä»¶é被表示为 FileList
对象ï¼è¿ä½¿å¾ web åºç¨è½å¤æ£ç´¢å个 File
对象ãåè¿æ¥ï¼File
对象æä¾å¯¹å
æ°æ®ç访é®ï¼å¦æä»¶çåç§°ã大å°ãç±»ååæåä¿®æ¹æ¥æã
å¯ä»¥å° File
å¯¹è±¡ä¼ éç» FileReader
å¯¹è±¡ä»¥è®¿é®æä»¶çå
容ãFileReader
æ¥å£æ¯å¼æ¥çï¼FileReaderSync
æ¥å£æä¾äºåæ¥çæ¬ï¼ä½ä»
å¨ web worker ä¸å¯ç¨ã
è¿æä¸¤ä¸ªä¸»è¦ç API ä¹å¤çæä»¶ï¼æä»¶åç®å½æ¡ç® API åæä»¶ç³»ç» APIã
æä»¶ API æ¯æåºæ¬ç APIã宿¯æè¯»ååå¤çç¨æ·ä»¥è¡¨åå ç´ è¾å ¥æä»¥ææ¾æä½å½¢å¼æç¡®æä¾çæä»¶æ°æ®ãå®è¿æ¯æéè¿ blob å¤çäºè¿å¶æ°æ®ã
æä»¶åç®å½æ¡ç® API 䏿件 API 䏿 ·ï¼ä¹å¤çç¨æ·éè¿è¡¨åè¾å
¥æææ¾æä½æä¾çæä»¶ã使¯ï¼è¾å
¥å
ç´ ç°å¨å
è®¸éæ©ç®å½æå¤ä¸ªæä»¶ï¼è䏿¯å个æä»¶ãç¶åï¼API æä¾äºä¸ç§å¤çç®å½ææä»¶çæ¹æ³ãè¿ä¸»è¦æ¯ Chrome èªå·±çåæââä½ ä¼åç°å®å¯¹å
¶ä»æ¥å£çæ©å±é½å¸¦æ webkit
åç¼ãæä»¶åç®å½æ¡ç® API çå®ç°åæ ååè¿ç¨æ´å 宿´ã宿忍卿¯æå®æ´çèææä»¶ç³»ç»ï¼ä½ç°å¨ä»
æ¯æå¯¹ç¨æ·æä¾çæ°æ®è¿è¡è¯»åæä½ã
æä»¶ç³»ç» API 为 Web åºç¨ç¨åºæä¾èææä»¶ç³»ç»ï¼ä»¥ä¾¿å®ä»¬å¯ä»¥å°æ°æ®æä¹ åå¨å¨ææ¡£çæºç§æçèæç³»ç»ä¸ï¼ç§°ä¸ºæºç§ææä»¶ç³»ç»ï¼OPFSï¼ï¼ãæä»¶ç³»ç»è®¿é® API è¿ä¸æ¥æ©å±äºæä»¶ç³»ç» APIï¼å 许ç½ç«å¨å¾å¾ç¨æ·åæçæ åµä¸è¯»åååå ¥ç¨æ·æä»¶ã䏿件 API åæä»¶åç®å½æ¡ç® API ä¸åï¼æä»¶ç³»ç» API çº¯ç²¹æ¯ JavaScriptï¼ä¸å¤ç表åè¾å ¥ã
æ¥å£Blob
Blob 代表âäºè¿å¶å¤§å¯¹è±¡âï¼ç±»ä¼¼äºæä»¶çä¸å¯åçåå§æ°æ®å¯¹è±¡ï¼ï¼Blob
å¯ä»¥ä½ä¸ºææ¬æäºè¿å¶æ°æ®è¢«è¯»åï¼æè
转æ¢ä¸º ReadableStream
ï¼å
¶æ¹æ³å¯ä»¥ç¨æ¥å¤çæ°æ®ã
File
æä¾æä»¶çä¿¡æ¯å¹¶å 许ç½é¡µä¸ç JavaScript 代ç 访é®å ¶ä¸çå 容ã
FileList
ç± HTML <input>
å
ç´ ç files
屿§è¿åï¼è¿è®©ä½ å¯ä»¥è®¿é®ç¨ <input type="file">
å
ç´ éæ©çæä»¶å表ãå½ä½¿ç¨ææ¾ API æ¶ï¼å®ä¹è¢«ç¨äºæ¾å
¥ç½é¡µå
容çæä»¶å表ï¼å
³äºè¿ç§ç¨æ³çç»èï¼è¯·åè§ DataTransfer
对象ã
FileReader
使 web åºç¨è½å¤å¼æ¥è¯»ååå¨å¨ç¨æ·è®¡ç®æºä¸çæä»¶ï¼æåå§æ°æ®ç¼å²åºï¼çå
容ï¼ä½¿ç¨ File
æ Blob
å¯¹è±¡æ¥æå®è¦è¯»åçæä»¶ææ°æ®ã
FileReaderSync
使 web åºç¨è½å¤åæ¥è¯»ååå¨å¨ç¨æ·è®¡ç®æºä¸çæä»¶ï¼æåå§æ°æ®ç¼å²åºï¼çå
容ï¼ä½¿ç¨ File
æ Blob
å¯¹è±¡æ¥æå®è¦è¯»åçæä»¶ææ°æ®ã
URL.createObjectURL()
URL.revokeObjectURL()
éæ¾å
åéè¿è°ç¨ URL.createObjectURL()
å建çç°æå¯¹è±¡ URLã
å¨è¿ä¸ªä¾åä¸ï¼æä»¬æä¾äºä¸ä¸ªæä»¶ <input>
å
ç´ ï¼å½ç¨æ·éæ©ä¸ä¸ªæä»¶æ¶ï¼æä»¬æéæ©ç第ä¸ä¸ªæä»¶çå
容ä½ä¸ºææ¬è¯»åï¼å¹¶æç»ææ¾ç¤ºå¨ <div>
å
ç´ ä¸ã
<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", () => {
const [file] = fileInput.files;
if (file) {
const reader = new FileReader();
reader.addEventListener("load", () => {
output.innerText = reader.result;
});
reader.readAsText(file);
}
});
ç»æ è§è åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4