DataTransferItemï¼getAsFileSystemHandle() æ¹æ³
æéå¯ç¨
æ¤ç¹æ§ä¸å±äºåºçº¿ï¼å 为å®å°æªå¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æã
å®å ¨ä¸ä¸æ: æ¤ç¹æ§ä» å¨ä¸äºæ¯æçæµè§å¨çå®å ¨ä¸ä¸æï¼HTTPSï¼ä¸å¯ç¨ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
DataTransferItem æ¥å£ç getAsFileSystemHandle() æ¹æ³è¿åä¸ä¸ª FileSystemFileHandleï¼è¥æå¨çé¡¹ç®æ¯æä»¶ï¼ï¼æ FileSystemDirectoryHandleï¼è¥æå¨çé¡¹ç®æ¯ç®å½ï¼ã
è¯æ³
getAsFileSystemHandle()
åæ°
æ ã
è¿åå¼
ä¸ä¸ª Promiseã
妿项ç®ç kind 屿§ä¸º "file"ï¼å¹¶ä¸å¨ dragstart æ drop äºä»¶å¤çå¨ä¸è®¿é®æ¤é¡¹ç®ï¼åè¿åç promise å
ç°ä¸ä¸ª FileSystemFileHandleï¼è¥æå¨çé¡¹ç®æ¯æä»¶ï¼æ FileSystemDirectoryHandleï¼è¥æå¨çé¡¹ç®æ¯ä¸ä¸ªç®å½ï¼ã
å¦åï¼promise ä¼å
ç° nullã
å¼å¸¸
æ ã
示ä¾
æ¬ç¤ºä¾ä½¿ç¨ getAsFileSystemHandle() æ¹æ³è¿åä¸ä¸ªè¡¨ç¤ºæ¾ç½®ç项ç®çæä»¶å¥æã
elem.addEventListener("dragover", (e) => {
// 黿¢å¯¼èª
e.preventDefault();
});
elem.addEventListener("drop", async (e) => {
// 黿¢å¯¼èª
e.preventDefault();
// å¤çæææ¡ç®
for (const item of e.dataTransfer.items) {
// å¯¹äºæä»¶/ç®å½æ¡ç®ï¼kind å°æ¯âfileâ
if (item.kind === "file") {
const entry = await item.getAsFileSystemHandle();
if (entry.kind === "file") {
// 妿æ¡ç®æ¯æä»¶åè¿è¡ä»£ç
} else if (entry.kind === "directory") {
// 妿æ¡ç®æ¯ç®å½åè¿è¡ä»£ç
}
}
}
});
è§è
| è§è |
|---|
| File System Access > # dom-datatransferitem-getasfilesystemhandle > |