Window:showSaveFilePicker() 方法

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

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

Window 接口的 showSaveFilePicker() 方法用于显示一个文件选择器,以允许用户保存一个文件。可以选择一个已有文件覆盖保存,也可以输入名字新建一个文件。

语法

js
showSaveFilePicker()

参数

options 可选

选项对象,包含以下属性:

excludeAcceptAllOption 可选

布尔值,默认为 false。默认情况下,选择器应包含一个不应用任何文件类型过滤器的选项(通过下面的类型选项启动)。将此选项设置为 true 意味着该选项可用。

id 可选

通过指定 ID,浏览器可以为不同的 ID 记住不同的目录。如果相同的 ID 用于另一个选择器,则该选择器将在同一目录中打开。

startIn 可选

一个 FileSystemHandle 对象或一个众所周知的目录("desktop""documents""downloads""music""pictures""videos")以指定打开选择器的起始目录。

suggestedName 可选

一个字符串。建议的文件名。

types 可选

允许选择的文件类型的数组。每个项目都是一个具有以下选项的对象:

description 可选

允许的文件类型类别的可选描述。默认为空字符串。

accept

一个 Object,其键设置为 MIME 类型,值设置为文件扩展名的数组(参见下面的示例)。

返回值

一个 Promise 对象,会兑现一个 FileSystemFileHandle 对象。

异常

AbortError DOMException

如果用户在没有做出选择的情况下关闭提示,或者如果用户代理认为任何选定的文件过于敏感或危险,则抛出此异常。

SecurityError DOMException

如果调用被同源策略阻止,或者不是通过用户交互(例如按下按钮)调用,则抛出该异常。

TypeError

如果无法处理接受类型,则抛出该异常,如果出现以下情况,则可能会发生这种情况:

  • types 选项中任何项目的 accept 选项的任何键字符串都无法解析为有效的 MIME 类型。
  • types 选项中任何项目的 accept 选项的任何值字符串都是无效的,例如,如果它不以 . 开头,或者它以 . 结尾,或者它包含任何无效的值码点且长度大于 16。
  • types 选项为空,excludeAcceptAllOption 选项为 true

安全性

瞬态用户激活是必需的。用户必须与页面或 UI 元素进行交互才能使该特性正常运行。

示例

以下函数可以显示一个文件选择器,并突出显示文本文件类型以供选择。

js
async function getNewFileHandle() {
  const opts = {
    types: [
      {
        description: "Text file",
        accept: { "text/plain": [".txt"] },
      },
    ],
  };
  return await window.showSaveFilePicker(opts);
}

规范

Specification
File System Access
# api-showsavefilepicker

浏览器兼容性

BCD tables only load in the browser

参见