I'm trying to use the FileSystem API to write an uploaded file on a SPA to a Local sandboxed FileSystem using the FileSystem API.
The File Is uploaded with drop acion and I can get the File
object array in the call back.
From the File
I can get the ReadableStream
calling the stream
method (yes, it return only readable sream).
Considering that the uploaded file could be big enough, I would go for a streaming than loading entirely into a blob and then writing into FileSystem api.
So, following the docs the steps are:
- get a
FileSystem
(DOMFileSystem) through the asyncwebkitRequestFileSystem
call. - get the prop
root
that is a FileSystemDirectoryEntry - create a file through
getFile
(with flagcreate:true
) that returns (async) aFileSystemFileEntry
Now from the FileEntry I can get a FileWriter using createWriter
but it is obsolete (in MDN), and in any case it is a FileWriter while I would look to obtain a WritableStream
instead in order to use the pipeTo
from the uploaded file Handler->ReadableStream.
So, I see that in the console the class (interface) FileSystemFileHandler
is defined but I cannot understand how to get an instance from the FileSystemFileEntry
. If I can obtain a FileSystemFileHandler
I can call the createWritable
to obtain a FileSystemWritableFileStream
that I can "pipe" with the ReadStream.
Anyone who can clarify this mess ?
references: https://web.dev/file-system-access/ https://wicg.github.io/file-system-access/#filesystemhandle https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry