Skip to main content

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.

Via Active questions tagged javascript - Stack Overflow https://ift.tt/fDqtxLw

Comments

Popular posts from this blog

ValueError: X has 10 features, but LinearRegression is expecting 1 features as input

So, I am trying to predict the model but its throwing error like it has 10 features but it expacts only 1. So I am confused can anyone help me with it? more importantly its not working for me when my friend runs it. It works perfectly fine dose anyone know the reason about it? cv = KFold(n_splits = 10) all_loss = [] for i in range(9): # 1st for loop over polynomial orders poly_order = i X_train = make_polynomial(x, poly_order) loss_at_order = [] # initiate a set to collect loss for CV for train_index, test_index in cv.split(X_train): print('TRAIN:', train_index, 'TEST:', test_index) X_train_cv, X_test_cv = X_train[train_index], X_test[test_index] t_train_cv, t_test_cv = t[train_index], t[test_index] reg.fit(X_train_cv, t_train_cv) loss_at_order.append(np.mean((t_test_cv - reg.predict(X_test_cv))**2)) # collect loss at fold all_loss.append(np.mean(loss_at_order)) # collect loss at order plt.plot(np.log(al...

Sorting large arrays of big numeric stings

I was solving bigSorting() problem from hackerrank: Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array. I know it works as follows: def bigSorting(unsorted): return sorted(unsorted, key=int) But I didnt guess this approach earlier. Initially I tried below: def bigSorting(unsorted): int_unsorted = [int(i) for i in unsorted] int_sorted = sorted(int_unsorted) return [str(i) for i in int_sorted] However, for some of the test cases, it was showing time limit exceeded. Why is it so? PS: I dont know exactly what those test cases were as hacker rank does not reveal all test cases. source https://stackoverflow.com/questions/73007397/sorting-large-arrays-of-big-numeric-stings

How to load Javascript with imported modules?

I am trying to import modules from tensorflowjs, and below is my code. test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title </head> <body> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script> <script type="module" src="./test.js"></script> </body> </html> test.js import * as tf from "./node_modules/@tensorflow/tfjs"; import {loadGraphModel} from "./node_modules/@tensorflow/tfjs-converter"; const MODEL_URL = './model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); Besides, I run the server using python -m http.server in my command prompt(Windows 10), and this is the error prompt in the console log of my browser: Failed to loa...