File API
File API 允许获取文件及其内容
二进制对象
Blob
接口用于表示二进制对象
Blob
接口的 Blob()
构造方法用于创建一个二进制对象
方法接受一个可选的对象数组,各项可以为 string
、ArrayBuffer
及 Blob
本身,代表创建的二进制对象的内容
方法接受一个可选的配置项:
type
可选参数接收一个 string
,指定二进制对象的 MIME 类型,默认值为空字符串
endings
可选参数接收一个 string
,指定二进制对象编码时对换行符的处理方式,值 transparent
代表对换行符不作处理,值 native
代表转换换行符为系统支持的形式,默认值为 transparent
1 | const blob = new Blob(['text', new ArrayBuffer(10), new Blob()], { type: 'text/plain', endings: 'native' }) |
Blob
接口的 size
属性返回一个 number
,代表二进制对象中数据的大小
Blob
接口的 type
属性返回一个 string
,代表二进制对象的 MIME 类型
1 | blob.size |
Blob
接口的 slice()
方法用于截取二进制对象
方法的 start
可选参数接收一个 number
,代表截取的起始位置,默认值为 0
方法的 end
可选参数接收一个 number
,代表截取的终止位置,默认值同 size
参数
方法的 contentType
可选参数接收一个 string
,代表新二进制对象的 type
参数
方法返回一个新二进制对象
1 | const b = blob.slice(1, 11) |
Blob
接口的 stream()
方法用于将二进制对象转换为流,返回一个 ReadableStream
Blob
接口的 text()
方法用于将二进制对象转换为 UTF-8 格式的字符串,返回一个 Promise 的 string
Blob
接口的 arrayBuffer()
方法用于将二进制对象转换为 Buffer,返回一个 Promise 的 ArrayBuffer
1 | const stream = blob.stream() |
文件对象
File
接口用于表示文件对象
File
接口的 File()
构造方法用于创建一个文件对象
方法接受一个对象数组,各项可以为 string
、ArrayBuffer
及 Blob
本身,代表创建的文件对象的内容
方法接受一个可选的配置项:
type
可选参数接收一个 string
,指定二进制对象的 MIME 类型,默认值为空字符串
endings
可选参数接收一个 string
,指定二进制对象编码时对换行符的处理方式,值 transparent
代表对换行符不作处理,值 native
代表转换换行符为系统支持的形式,默认值为 transparent
lastModified
可选参数接收一个 number
,指定文件最后更改时间
1 | const file = new File(['text', new ArrayBuffer(10), new Blob()], 'file', { type: 'text/plain', endings: 'native', lastModified: Date.now() }) |
File
接口的 name
属性返回一个 string
,代表文件对象的名称
File
接口的 lastModified
属性返回一个 number
,代表文件对象的最后更改时间,若无则返回当前时间
1 | file.name |
文件列表对象
FileList
接口用于表示文件列表对象
FileList
接口的 length
属性返回一个 number
,代表文件列表长度
FileList
接口的 item()
方法根据给定的 index 返回对应的文件
FileList
接口支持使用 []
访问。亦支持使用 iterator 遍历
文件异步读取对象
FileReader
接口用于异步地读取文件
FileReader
接口的 FileReader()
构造方法用于创建异步读取文件对象
FileReader
接口的 EMPTY
常量值为 0
,表示实例刚刚创建但尚未开始读取文件
FileReader
接口的 LOADING
常量值为 1
,表示正在开始读取文件
FileReader
接口的 DONE
常量值为 2
,表示读取文件完成,无论是否读取成功或失败抑或手动终止
FileReader
接口的 readyState
属性返回一个 string
,代表文件读取进度,值为 EMPTY
、LOADING
、DONE
之一
FileReader
接口的 result
属性返回一个 string
或 ArrayBuffer
或 null
,表示文件读取结果,具体返回值类型取决于调用的方法
FileReader
接口的 error
属性返回一个 DOMException
或 null
,表示文件读取错误
FileReader
接口的 readAsArrayBuffer()
方法用于异步地将二进制对象读取为 ArrayBuffer
FileReader
接口的 readAsDataURL()
方法用于异步地将二进制对象读取为 Object URL
FileReader
接口的 readAsText()
方法用于异步地将二进制对象读取为指定编码的 string
以上三个方法接收一个 Blob
对象,无返回值
FileReader
接口的 abort()
方法用于终止读取进程
FileReader
接口的 abort
事件在读取文件进程被终止时触发,即调用 abort()
方法
FileReader
接口的 error
事件在读取文件进程失败时触发
FileReader
接口的 load
事件在读取文件进程成功完成时触发
FileReader
接口的 loadend
事件在读取文件进程完成时触发,无论成功与否
FileReader
接口的 loadstart
事件在读取文件进程开始时触发
FileReader
接口的 progress
事件在读取文件进程中周期性触发
事件均返回一个 ProgressEvent
1 | const reader = new FileReader() |
文件同步读取对象
FileReaderSync
接口用于同步地读取文件内容
该接口仅在除 ServiceWorker 外的其他 Worker 环境中可用
FileReaderSync
接口的 FileReaderSync()
构造方法用于创建同步读取文件对象
FileReaderSync
接口的 readAsArrayBuffer()
方法用于同步地将二进制对象读取为 ArrayBuffer
FileReaderSync
接口的 readAsDataURL()
方法用于同步地将二进制对象读取为 Object URL
FileReaderSync
接口的 readAsText()
方法用于同步地将二进制对象读取为指定编码的 string
以上三个方法接收一个 Blob
对象,返回一个 string
以上三个方法可能抛出 NotFoundError
,若资源不存在(如已被删除)
以上三个方法可能抛出 NotReadableError
,若资源因为权限问题无法被读取(如资源锁)或资源快照与本地存储不符
以上三个方法可能抛出 SecurityError
,若资源被用户代理判断为网络使用不安全,或进行了过于频繁的读取,或已被第三方修改
以上三个方法可能抛出 EncodingError
,若资源被编码为 data URL 且超出了用户代理限制
1 | const reader = new FileReaderSync() |
Object URL
使用 URL 接口的 createObjectURL()
创建一个 Object URL
方法接收一个 Blob
或 MediaSource
参数,代表源二进制对象
方法返回一个 string
,代表创建的 Object URL
使用 URL 接口的 revokeObjectURL()
释放一个已创建的 Object URL
方法接收一个 string
,代表需释放的 Object URL
以上两方法在除 ServiceWorker 外的其他环境中可用
类型
1 | interface Blob { |