文件处理程序

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

类型 数组

file_handlers 成员指定一个对象数组,表示已安装的 渐进式 Web 应用 (PWA) 可以处理的文件类型。

浏览器在安装 PWA 时读取 file_handlers 成员,并将其用于将应用程序与操作系统级别上的给定文件类型集关联起来。

例如,可以将 PWA 注册为处理与 text/plain MIME 类型 匹配的文件。安装此 PWA 后,操作系统能够使用它来处理文本文件,在用户打开此类型文件时打开 PWA。请注意,其他应用程序也可能被注册为文本文件处理程序,并且操作系统管理文件类型与应用程序之间关联的方式,以及它们让用户选择处理给定文件的应用程序的方式,可能会因设备而异。

注意:虽然 file_handlers 成员用于将 PWA 注册到给定文件类型集,但这只会导致操作系统在打开匹配文件时启动 PWA。然后,PWA 需要使用 JavaScript 代码实际处理文件。有关详细信息,请参阅 处理文件

对象数组。数组中的每个对象都必须包含以下值(actionaccept 是必需的)

成员 描述
action 包含处理文件时要导航到的 URL 的字符串。
此 URL 必须在 PWA 的导航范围内,即 PWA 可以导航到的 URL 集。PWA 的导航范围默认为其 start_url 成员,但也可以使用 scope 成员来定义。
accept 一个对象。对于对象中的每个属性
  • 属性键是 MIME 类型。
  • 属性值是表示与该 MIME 类型关联的文件扩展名的字符串数组。

示例

在此示例中,Web 应用清单声明一个文件处理程序,该处理程序注册应用程序以处理音频文件。其他清单成员(如 nameicons)在本示例中为了简洁起见而未包含。

json
{
  "file_handlers": [
    {
      "action": "/handle-audio-file",
      "accept": {
        "audio/wav": [".wav"],
        "audio/x-wav": [".wav"],
        "audio/mpeg": [".mp3"],
        "audio/mp4": [".mp4"],
        "audio/aac": [".adts"],
        "audio/ogg": [".ogg"],
        "application/ogg": [".ogg"],
        "audio/webm": [".webm"],
        "audio/flac": [".flac"],
        "audio/mid": [".rmi", ".mid"]
      }
    }
  ]
}

处理文件

要实际在 PWA 中实现文件处理,Web 开发人员还需要使用 window.launchQueue 来在应用程序 JavaScript 代码中处理传入的文件。

文件处理是在 主线程 上运行的应用程序代码中完成的,而不是在应用程序的 服务工作者 中。

在以下示例中,window.launchQueue.setConsumer() 用于指定一个回调函数,该函数接收传入的音频文件并使用 Audio 元素播放第一个文件

js
async function playSong(handledFile) {
  const blob = await handledFile.getFile();
  const url = window.URL.createObjectURL(blob);
  const audio = new Audio(url);
  audio.play();
}

if ("launchQueue" in window) {
  window.launchQueue.setConsumer((launchParams) => {
    if (launchParams.files && launchParams.files.length) {
      playSong(launchParams.files[0]);
    }
  });
}

规范

规范
清单孵化
# file_handlers-member

浏览器兼容性

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

另请参阅