首页 > 其他分享 >文件操作相关对象和API

文件操作相关对象和API

时间:2023-02-19 16:56:24浏览次数:44  
标签:文件 读取 对象 视图 二进制 API Blob 操作

ArrayBuffer

为了满足 JavaScript 与显卡之间大量的、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是传统的文本格式。文本格式传递一个 32 位整数,两端的 JavaScript 脚本与显卡都要进行格式转化,将非常耗时。这时要是存在一种机制,可以像 C 语言那样,直接操作字节,将 4 个字节的 32 位整数,以二进制形式原封不动地送入显卡,脚本的性能就会大幅提升。

ArrayBuffer 代表内存之中的一段二进制数据,可以通过“视图”进行操作。“视图”部署了数组接口,这意味着,可以用数组的方法操作内存。它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指定格式解读二进制数据。

二进制数据相关操作在实际应用开发中发挥重要作用(filefetchxmlHttpRequestcanvaswebSocket),但又常常被前端工程师所忽视。详细可查看《ECMAScript 6 入门 ArrayBuffer》

Blob

Blob 对象表示一个二进制文件的数据内容,通常用来读写文件。

const blob = new Blob(array [, options]);

参数:

  • array: 可以是一个由 ArrayBuffer , ArrayBufferView , Blob , DOMString 等对象构成的 Array,表示新生成的 Blob 实例对象的内容。
  • options:
    • type: 指定类型。
    • endings: 内容结尾的换行符是否需要适配宿主系统。

属性:

  • size: 文件的大小,单位为字节。
  • type: 文件的类型。

方法:

  • slice: 用法与 Arrayslice 相同,常用于数据分片。
const newBlob = oldBlob.slice([start [, end [, contentType]]])

File 与 FileList

文件对象,继承于 Blob,并且可以用在任意的 Blob 对象的 context 中(如 FileReaderURL.createObjectURL())。FileList 为成员为 File 的类数组。

const file = new File(array, name[, options]);

参数:

  • array: 与 Bolb 构造器的第一个参数相同。
  • name: 文件名或文件路径。
  • options:
    • type: 指定类型。
    • lastModified: 最后修改时间(时间戳)。

属性:

  • name: 文件名。
  • type: 指定类型
  • size: 文件大小(单位字节)
  • lastModified: 最后修改时间。

FileReader

用于web应用读取 FileBlob 对象的操作API对象。

属性:

  • readyState: 当前读取状态。
    • 0: 为加载。
    • 1: 加载中。
    • 2: 加载完成。
  • result: 读取完成后文件的内容。
  • error: 读取文件时发生的错误。

事件:

  • onloadstart: 读取操作开始。
  • onabort: 读取操作被中断。
  • onprogress: 读取Blob
  • onloadend: 读取操作结束。
  • onload: 读取操作完成。
  • onerror: 读取操作发生错误。

方法:

  • abort: 终止读取操作。
  • readAsArrayBuffer: 读取完成后返回一个 ArrayBuffer 实例。
  • readAsBinaryString: 读取完成后返回二进制字符串。
  • readAsText: 读取完成后返回文本字符串。
  • readAsDataURL: 读取完成后返回 base64DataURL

文件对象关系图

标签:文件,读取,对象,视图,二进制,API,Blob,操作
From: https://www.cnblogs.com/qingzhao/p/17135023.html

相关文章

  • 第八章从源文件到可执行文件
    本章所讲的就是原文件与可执行文件及其转换。源代码是用某种编程语言编写的程序,源文件是保存源代码的文件。用任何编程语言编写的源代码经过翻译后得到的是本地代码。本地......
  • 使用python批量转换.jfif文件为.jpg
    python代码如下,有需要的自行取用:需要引入Image库,方法是:pipinstallImage importosfromPILimportImageroot_dir=r'C:\temp'deflist_files(root_dir):......
  • LabVIEW|知识点:XML文件格式
      XML(eXtensibleMarkupLanguage)是一种目前广泛使用的数据传输和存储的格式,其本质上是一种文本文件,可以使用任何一个文本编辑工具打开和修改。类似于HTML,XML被设计为具......
  • 前端vue的JsPDF html2canvas 生成pdf并以文件流形式上传到后端(转载)
    原文地址1.首先在文件内引入htmlToPdf.js这里代码引入了html2canvas和jspdf//需要npmihtml2Canvas和npmijspdf在这里将getPdf这个函数挂载到Vue的原型上,最后retu......
  • .NET6+WebApi+Vue 前后端分离后台管理系统(二)
    项目搭建: 这个项目使用的开发工具是:VSCode,工具的下载和安装这里就不赘述了,自行百度吧。使用的技术主要是:Vue3、ElementPlus等,Vue项目的搭建这里也不赘述,如果不熟悉可......
  • golang 单测运行单个函数、文件、跳过文件命令
    1、单测运行1.2运行某个单测函数gotest-v-run=xxx,xxx是函数名,支持正则表达式;参数-v说明需要打印详情提示Golang单测是根据前缀匹配来执行的,gotest-v-run=......
  • K8SYaml文件详解
    一、K8S支持的文件格式kubernetes支持YAML和JSON文件格式管理资源对象。JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内......
  • 文件上传基础小总结
    基础及过滤方式什么是文件上传漏洞?存在文件上传的地方均有可能有文件漏洞(但不是一定有);如果上传代码某个地方存在验证疏忽,则会有文件漏洞危害可能直接获取网站权限,危......
  • FFmpeg滤镜API
    FFmpeg采用了FilterGraph的模型来管理整个数据流的处理,参与数据处理的各个功能模块叫做Filter(滤镜)。普通的用户在使用音视频剪辑软件的时候,会把滤镜这个词理解为app......
  • 对象解构
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>对象解构</title></head><body><script>letperson={name:'gpl',......