Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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.

js
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

Siehe auch