Safari iOS 上的文件系统访问 API - createSyncAccessHandle() UnknownError: 'invalid platform file handle'

问题描述 投票:0回答:0

我目前正在重构一个应用程序以使用 OPFS 在 iPad 上保存图像,用于用户需要在没有 wi-fi 的地方拍照但将所有图像存储在 RAM 中的用例导致 iPad 崩溃。

我已经成功地创建了一个工作的 OPFS Worker,它可以在我的本地 Windows 机器上的 Chrome 和 Firefox 上工作,但我无法让它在测试 iPad 上工作。 [编辑] 它所做的是将 base64 文本发送给工作人员并将其保存为文本文件,我可以稍后检索。

我用来测试的iPad是iOS版本16.3.1.

我尝试开发的 iPad 是 iOS 版本 15.7.3.

据我所知,Safari iOS 从 15.2 开始就具有 OPFS 兼容性。

我能够将问题缩小到一个特定错误(通过 Web Inspector):

Unhandled Promise Rejection: UnknownError: invalid platform file handle

它引用了以下代码(在 Web Worker 中):

    const root = await navigator.storage.getDirectory();
    const saveHandle = await root.getFileHandle(input.fileName, { create: true });
    const access = await saveHandle.createSyncAccessHandle(); //<-- ERROR

input.fileName
通常类似于
S0I0.txt
,基于我用于组织图像的标签系统。

文件是否由

getFileHandle()
创建似乎并不重要。

我无法从

Error
对象中提取任何其他东西。

我也无法在任何地方找到对这个特定错误的任何参考。它不在

web docs
Exceptions 列表中。事实上,我发现的唯一引用是在 一张 2013 年的旧票上

据我所知,前面的两个语句可以正常工作并生成正确的对象,分别是

FileSystemDirectoryHandle
FileSystemFileHandle

javascript ios promise mobile-safari file-system-access-api
© www.soinside.com 2019 - 2024. All rights reserved.