Window: showSaveFilePicker() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

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

Window 接口的 showSaveFilePicker() 方法会显示一个文件选择器,允许用户通过选择现有文件或为新文件输入名称来保存文件。

语法

js
showSaveFilePicker()
showSaveFilePicker(options)

参数

options 可选

包含选项的对象,选项如下:

excludeAcceptAllOption 可选

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

id 可选

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

startIn 可选

一个 FileSystemHandle 或一个众所周知的目录("desktop""documents""downloads""music""pictures""videos"),用于打开对话框。

suggestedName 可选

一个 String。建议的文件名。

types 可选

一个 Array,其中包含允许保存的文件类型。每个项都是一个具有以下选项的对象:

description 可选

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

accept

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

返回值

一个 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);
}

规范

规范
文件系统访问
# api-showsavefilepicker

浏览器兼容性

另见