taoliujun / blog

https://taoliujun.github.io/blog/
https://taoliujun.github.io/blog/
0 stars 0 forks source link

Web API - File System #86

Open taoliujun opened 6 months ago

taoliujun commented 6 months ago

File System

MDN: https://developer.mozilla.org/en-US/docs/Web/API/File_System_API

File System可读取、写入用户选择的文件、目录。

File的交互有所不同,本API不依赖<input type="file" />元素。

OPFS(origin private file system) Concept

以往,只能读取、写入用户手动选择的文件或目录,这是安全性上必须考虑的。但如果要批量写入很多文件,这些交互操作会频繁且耗时。OPFS提供了新的可能性,允许在私有域文件系统中直接操作文件,这个文件系统和用户的文件系统是隔离的,用户看不到它,它也不能访问用户的文件系统。

对于用户选择的文件,也可以通过createSyncAccessHandle()授权为OPFS

接口

FileSystemHandle

文件系统的基本接口,开发者不直接使用它。文件和目录的访问接口均继承于此。其中一部分属性、方法:

FileSystemFileHandle

访问文件的接口。除继承FileSystemHandle的属性方法,还有:

FileSystemDirectoryHandle

访问目录的接口。除继承FileSystemHandle的属性方法,还有:

FileSystemSyncAccessHandle

访问OPFS的接口。部分属性方法有:

FileSystemWritableFileStream

写入文件的接口。部分属性方法有:

属性和方法

window.showOpenFilePicker(options)

选择可读取文件的对话框,返回FileSystemFileHandle

入参支持多选文件、目录入口、目录定位、类型筛选等。

window.showSaveFilePicker()

选择可写入文件的对话框,返回FileSystemFileHandle。该接口实例已经拥有了写入权限。

window.showDirectoryPicker()

选择可读取目录的对话框,返回FileSystemDirectoryHandle

DataTransferItem.getAsFileSystemHandle()

拖拽文件或目录,返回FileSystemFileHandleFileSystemDirectoryHandle

StorageManager.getDirectory()

通过navigator.storage.getDirectory()返回OPFS

示例

示例:https://taoliujun.github.io/example/web-api/File_System_API/index.html