此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

DataTransferItem:getAsFileSystemHandle() 方法

有限可用

此特性不属于基线,因为它尚未在主流浏览器中得到支持。

安全上下文: 此特性仅在一些支持的浏览器的安全上下文(HTTPS)中可用。

实验性: 这是一项实验性技术
在将其用于生产之前,请仔细检查浏览器兼容性表格。

DataTransferItem 接口的 getAsFileSystemHandle() 方法返回一个 FileSystemFileHandle(若拖动的项目是文件),或 FileSystemDirectoryHandle(若拖动的项目是目录)。

语法

js
getAsFileSystemHandle()

参数

无。

返回值

一个 Promise。

如果项目的 kind 属性为 "file",并且在 dragstart 或 drop 事件处理器中访问此项目,则返回的 promise 兑现一个 FileSystemFileHandle(若拖动的项目是文件)或 FileSystemDirectoryHandle(若拖动的项目是一个目录)。

否则,promise 会兑现 null。

异常

无。

示例

本示例使用 getAsFileSystemHandle() 方法返回一个表示放置的项目的文件句柄。

js
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

浏览器兼容性

参见