DataTransferItem:getAsFileSystemHandle() 方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,且在某些或所有支持的浏览器中可用。

实验性:这是一个实验性技术
在生产环境中使用此功能前,请仔细查看浏览器兼容性表

getAsFileSystemHandle()DataTransferItem接口的方法,如果拖动的项目是文件,则返回FileSystemFileHandle;如果拖动的项目是目录,则返回FileSystemDirectoryHandle

语法

js
getAsFileSystemHandle()

参数

无。

返回值

一个Promise

如果项目的kind属性为"file",并且在dragstartdrop事件处理程序中访问此项目,则如果拖动的项目是文件,则返回的 Promise 将以FileSystemFileHandle解析;如果拖动的项目是目录,则返回的 Promise 将以FileSystemDirectoryHandle解析。

否则,Promise 将以null解析。

异常

无。

示例

此示例使用getAsFileSystemHandle()方法返回已放置项目的文件句柄

js
elem.addEventListener("dragover", (e) => {
  // Prevent navigation.
  e.preventDefault();
});
elem.addEventListener("drop", async (e) => {
  // Prevent navigation.
  e.preventDefault();

  // Process all of the items.
  for (const item of e.dataTransfer.items) {
    // kind will be 'file' for file/directory entries.
    if (item.kind === "file") {
      const entry = await item.getAsFileSystemHandle();
      if (entry.kind === "file") {
        // run code for if entry is a file
      } else if (entry.kind === "directory") {
        // run code for is entry is a directory
      }
    }
  }
});

规范

规范
文件系统访问
# dom-datatransferitem-getasfilesystemhandle

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅