DataTransferItem: getAsFileSystemHandle() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die getAsFileSystemHandle()
Methode des DataTransferItem
Interfaces gibt ein Promise
zurück, das mit einem FileSystemFileHandle
erfüllt wird, wenn das gezogene Element eine Datei ist, oder mit einem FileSystemDirectoryHandle
, wenn das gezogene Element ein Verzeichnis ist.
Syntax
getAsFileSystemHandle()
Parameter
Keine.
Rückgabewert
Ein Promise
.
Wenn die kind
Eigenschaft des Elements "file"
ist und dieses Element in den Event-Handlern dragstart
oder drop
aufgerufen wird, wird das zurückgegebene Promise mit einem FileSystemFileHandle
erfüllt, wenn das gezogene Element eine Datei ist, oder mit einem FileSystemDirectoryHandle
, wenn das gezogene Element ein Verzeichnis ist.
Andernfalls wird das Promise mit null
erfüllt.
Ausnahmen
Keine.
Beispiele
Dieses Beispiel verwendet die getAsFileSystemHandle()
Methode, um
Datei-Handles für abgelegte Elemente zurückzugeben.
Hinweis:
Da getAsFileSystemHandle()
den Eintragshandle nur im gleichen Tick wie der drop
Ereignis-Handler abrufen kann, darf davor kein await
stehen. Deshalb rufen wir getAsFileSystemHandle()
zuerst synchron für alle Elemente auf und warten dann gleichzeitig auf ihre Ergebnisse.
elem.addEventListener("dragover", (e) => {
// Prevent navigation.
e.preventDefault();
});
elem.addEventListener("drop", async (e) => {
// Prevent navigation.
e.preventDefault();
const handlesPromises = [...e.dataTransfer.items]
// kind will be 'file' for file/directory entries.
.filter((x) => x.kind === "file")
.map((x) => x.getAsFileSystemHandle());
const handles = await Promise.all(handlesPromises);
// Process all of the items.
for (const handle of handles) {
if (handle.kind === "file") {
// run code for if handle is a file
} else if (handle.kind === "directory") {
// run code for is handle is a directory
}
}
});
Spezifikationen
Specification |
---|
File System Access> # dom-datatransferitem-getasfilesystemhandle> |
Browser-Kompatibilität
Loading…