文件处理程序
类型 | 数组 |
---|
file_handlers
成员指定一个对象数组,表示已安装的 渐进式 Web 应用 (PWA) 可以处理的文件类型。
浏览器在安装 PWA 时读取 file_handlers
成员,并将其用于将应用程序与操作系统级别上的给定文件类型集关联起来。
例如,可以将 PWA 注册为处理与 text/plain
MIME 类型 匹配的文件。安装此 PWA 后,操作系统能够使用它来处理文本文件,在用户打开此类型文件时打开 PWA。请注意,其他应用程序也可能被注册为文本文件处理程序,并且操作系统管理文件类型与应用程序之间关联的方式,以及它们让用户选择处理给定文件的应用程序的方式,可能会因设备而异。
注意:虽然 file_handlers
成员用于将 PWA 注册到给定文件类型集,但这只会导致操作系统在打开匹配文件时启动 PWA。然后,PWA 需要使用 JavaScript 代码实际处理文件。有关详细信息,请参阅 处理文件。
值
示例
在此示例中,Web 应用清单声明一个文件处理程序,该处理程序注册应用程序以处理音频文件。其他清单成员(如 name
或 icons
)在本示例中为了简洁起见而未包含。
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 的浏览器中加载。