广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavascriptFile和Blob详解
  • 282
分享到

JavascriptFile和Blob详解

2024-04-02 19:04:59 282人浏览 安东尼
摘要

目录File()语法参数示例Blob()语法参数属性方法示例总结 File() File() 构造器创建新的 File 对象实例。 语法 var myFile = new Fil

File()

File() 构造器创建新的 File 对象实例。

语法


var myFile = new File(bits, name[, options]);

参数

bits

一个包含ArrayBufferArrayBufferViewBlob,或者 DOMString 对象的 Array — 或者任何这些对象的组合。这是 UTF-8 编码的文件内容。

name

USVString,表示文件名称,或者文件路径。

options 可选

选项对象,包含文件的可选属性。可用的选项如下:

  • type: DOMString,表示将要放到文件中的内容的 MIME 类型。默认值为 “” 。
  • lastModified: 数值,表示文件最后修改时间的 Unix 时间戳(毫秒)。默认值为 Date.now()。

示例


var file = new File(["my name"], "infoTxt", {
  type: "text/plain",
});

Blob()

Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

Blob 表示的不一定是javascript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件,同时 Blob 对象的api也被列在 File 接口中。

要从其他非blob对象和数据构造一个 Blob,请使用 Blob() 构造函数。要创建一个 blob 数据的子集 blob,请使用 slice() 方法。要获取用户文件系统上的文件对应的 Blob 对象,请参阅 File 文档。

语法


var aBlob = new Blob( array, options );

返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。

参数

  • array 是一个由ArrayBufferArrayBufferViewBlobDOMString 等对象构成的 Array ,或者其他类似对象的混合体,它将会被放进 Blob。DOMStrings会被编码为UTF-8。
  • options 是一个可选的BlobPropertyBag字典,它可能会指定如下两个属性:
    • type,默认值为 “”,它代表了将会被放入到blob中的数组内容的MIME类型。
    • endings,默认值为"transparent",用于指定包含行结束符\n的字符串如何被写入。 它是以下两个值中的一个: “native”,代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者 “transparent”,代表会保持blob中保存的结束符不变

属性

Blob.size 只读

Blob 对象中所包含数据的大小(字节)。

Blob.type 只读

一个字符串,表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。

方法


Blob.slice([start[, end[, contentType]]])

返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据。


Blob.stream()

返回一个能读取blob内容的 ReadableStream


Blob.text()

返回一个promise且包含blob所有内容的UTF-8格式的 USVString


Blob.arrayBuffer()

返回一个promise且包含blob所有内容的二进制格式的 ArrayBuffer

示例


const aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
const oMyBlob = new Blob(aFileParts, {type : 'text/html'}); // 得到 blob
oMyBlob.size // 32
oMyBlob.type // 'text/html'

Blob() 构造函数允许通过其它对象创建 Blob 对象。比如,用字符串构建一个 blob:


var debug = {hello: "world"};
var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});

使用 Blob 创建一个指向类型化数组的URL


const imgBlob = fetchedImgData(); // 通过接口返回的图片资源,设置返回的responseType为blob
const blob = new Blob([imgBlob], {type: 'image/png' }); // 传入一个合适的 MIME 类型
const url = URL.createObjectURL(blob);
// 会产生一个类似 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf 这样的URL字符串
// 你可以像使用普通 URL 那样使用它,比如用在 img.src 上。

从 Blob 中提取数据

一种从Blob中读取内容的方法是使用 FileReader。以下代码将 Blob 的内容作为类型数组读取:


const reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.addEventListener("load ", function(readRes) {
   // readRes.target.result 转化为arrayBuffer的 blob
});

另一种读取Blob中内容的方式是使用Response对象。下述代码将Blob中的内容读取为文本:


var text = await new Response(blob).text();

通过使用 FileReader 的其它方法可以把 Blob 读取为字符串或者数据URL。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavascriptFile和Blob详解

本文链接: https://www.lsjlt.com/news/160655.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavascriptFile和Blob详解
    目录File()语法参数示例Blob()语法参数属性方法示例总结 File() File() 构造器创建新的 File 对象实例。 语法 var myFile = new Fil...
    99+
    2022-11-12
  • MySQL中blob和text数据类型详解
    目录前言1. blob 类型2. text 类型总结前言 前面文章我们介绍过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详细介绍过 blob 及 tex...
    99+
    2022-11-13
  • 详解jdbc实现对CLOB和BLOB数据类型的操作
    详解jdbc实现对CLOB和BLOB数据类型的操作1、 读取操作CLOB //获得数据库连接 Connection con = ConnectionFactory.getConnection(); con.se...
    99+
    2023-05-31
    jdbc clob blob
  • MySQL使用TEXT/BLOB类型的知识点详解
    一、TEXT和BLOB的区别 TEXT和BLOB家族之间仅有的不同是BLOB类型存储的是二进制数据,没有排序规则或字符集,而TEXT类型有字符集或排序规则。说白了如果要储存中文则选择TEXT。 二、默认值问题 St...
    99+
    2022-05-14
    MySQL TEXT BLOB
  • Blob对象实现文件上传下载示例详解
    目录什么是Blod?Blob的属性与方法使用Blod下载指定类型文件上传FileReader对象的异步方式读取首先先介绍一下 FileReader对象FileReader常用属性与方...
    99+
    2023-01-04
    Blob对象实现文件上传下载 Blob文件上传下载
  • @DateTimeFormat 和 @JsonFormat 注解详解
    这一篇文章足以让你对Java当中Date时间上的理解更上一层楼,本篇文章主要通过代码的形式来进行试验,彻彻底底搞明白日期传参,以及日期返回参数的格式相关问题,每一个步骤都会记得特别详细! 本篇文...
    99+
    2023-10-08
    mybatis java spring boot 日期
  • exp和imp详解
      之前写了关于expdp和impdp的文章,感兴趣的可以移步http://blog.itpub.net/30485601/viewspace-2151455/,由于expdp和impdp是ora...
    99+
    2022-10-18
  • cookie,session和token详解
    文章目录 前言一、cookie1.1 cookie简介1.2 cookie作用 二、session2.1 session简介2.2 session作用 三、token3.1 token简介3.2 token作用 四、区别...
    99+
    2023-08-20
    服务器 前端 java
  • @RequestBody 和 @RequestParam注解使用详解
    @RequestParam @RequestParam:接收来自RequestHeader中,即请求头。通常用于GET请求,例如:http://localhost:8080/hello/name=admin&age=18 @Target(...
    99+
    2023-09-01
    java java-ee spring boot
  • Python解惑之True和False详解
    前言 众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,...
    99+
    2022-06-04
    详解 Python True
  • 详解Spring注解--@Autowired、@Resource和@Service
    什么是注解传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点:1、如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多。...
    99+
    2023-05-31
    spring 注解 ce
  • 详解JS中? ?和?. 和||的区别
    目录1、 与 || 的区别2、 和 . 的区别1、 与 || 的区别 1)相同点: 和 || 的用法相同,都是前后是值,中间用符号连接,根据前面的值来判断最终是返回前面的值还是后面...
    99+
    2022-11-13
  • nginx中deny和allow详解
    deny和allow都是在access阶段 allow和deny都可以在http,server,location,limit_except中使用 如果被deny则会返回“403 Forbidden”报...
    99+
    2023-09-09
    nginx linux 服务器
  • Spring和SpringMvc详细讲解
      🏆今日学习目标: 🍀Spring和SpringMvc详细讲解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的...
    99+
    2023-10-25
    spring java
  • JavaScript中BOM和DOM详解
    目录BOM(浏览器对象模型) 1. window 获取浏览器c窗口尺寸 2. screen 获取电脑屏幕大小 3. window 开启关闭窗口 4. 浏览器事件 5. locatio...
    99+
    2022-11-12
  • @PostMapping和@GetMapping使用详解
    @PostMapping和@GetMapping用法详解 一、使用post方法调用 1.前端传递参数如果是一个object的话 如{id:‘1’,name:‘2222’} 后端参数接收的话,需要使用@...
    99+
    2023-09-20
    java 前端 spring
  • jsp和servlet区别详解
    jsp和servlet区别详解jsp和servlet的区别有以下几点:Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。推荐:《Java学习》js...
    99+
    2015-04-20
    java教程 jsp servlet
  • 【重点】RTO和RPO详解
      容灾与备份之间是之间关系容灾与备份之间是之间关系  1.容灾和备份的目的不同  容灾系统的目的在于保证系统数据和服务的“在线性”,即当系统发生故障时,仍然能够正常地向网络系统提供数据和服务,以使系统不致...
    99+
    2022-10-18
  • Android中ContentProvider和ContentResolver详解
    Android中ContentProvider和ContentResolver详解 在Android中,我们的应用有的时候需要对外提供数据接口,可以有如下几种方法: 1)AID...
    99+
    2022-06-06
    Android
  • MyISAM和InnoDB区别详解
    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作