File System Access API on Safari iOS - createSyncAccessHandle() UnknownError: 'invalid platform file handle'
I'm currently refactoring an app to use the OPFS to save images on an iPad for a use-case where a user needs to take pictures in a location that doesn't have wi-fi but storing all of the images in RAM will cause the iPad to crash.
I've managed to create a working OPFS Worker that works on my local Windows machine on Chrome and Firefox, but I can't get it working on the test iPad. [EDIT] What it does is sends the base64 text to the worker and saves it as a text file, that I can retrieve later.
The iPad I'm using to test is iOS version 16.3.1.
The iPad I'm trying to develop for is iOS version 15.7.3.
As far as I can tell, Safari iOS has had OPFS compatibility since 15.2.
I was able to narrow down the problem to one specific error (via Web Inspector):
Unhandled Promise Rejection: UnknownError: invalid platform file handle
It references back to the following code (within a 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
is usually something like S0I0.txt
, based off a labeling system I have for organizing the images.
It doesn't seem to matter if the file is being created by getFileHandle()
or not.
I haven't been able to extract anything else from the Error
object.
I also have been unable to find any reference to this specific error anywhere. It's not on the list of Exceptions
on the web docs. In fact, the only reference to the exact phrase I've found is on an old ticket from 2013.
As far as I can tell, the 2 preceding statements work correctly and generate the right objects, being FileSystemDirectoryHandle
and FileSystemFileHandle
, respectively.
Comments
Post a Comment