Blob DOM JS

dom入门之Blob对象 1.简介 Blob对象表示blob,它是不可变的原始数据的类似文件的对象;它们可以读取为文本或二进制数据,也可以转换为ReadableStream因此可以使用其方法来处理数据。 Blob不一定是JavaScript本机格式的数据。该File接口基于Blob,继承了Blob功能并将其扩展以支持用户系统上的文件。 Blob只有在浏览器dom环境下存在,后端node环境不存在 2.类型 type EndingType = "native" | "transparent"; ty... 阅读详情

Blob


  • TAGS 
  • 文件

一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本地文件.

创建Blob对象的方法有几种,可以调用Blob构造函数,还可以使用一个已有Blob对象上的slice()方法切出另一个Blob对象,还可以调用canvas对象上的toBlob方法.

注: 需要注意的是,一些浏览器上的 slice()方法仍带有前缀:Firefox 12之前的版本上为 blob.mozSlice(),Safari上为 blob.webkitSlice().
注: 一些浏览器提供了 BlobBuilder接口,但并不是所有的浏览器都支持 BlobBuilder,而且现有的 BlobBuilder实现都是带前缀的.更主要的是 BlobBuilder已经被废弃,你应该尽可能的使用 Blob构造函数来代替.

属性

属性名     类型 描述
size       unsigned long longBlob对象中所包含数据的大小. 只读.
typeDOMString一个字符串,表明该Blob对象所包含数据的MIME类型.如果类型未知,则该值为空字符串. 只读.

构造函数

Blob Blob(
  [optional] Array parts,
  [optional] BlobPropertyBag properties
);
参数
parts
一个数组,包含了将要添加到 Blob对象中的数据.数组元素可以是任意多个的 ArrayBuffer,ArrayBufferView (typed array),  Blob,或者  DOMString对象.
properties
一个对象,设置 Blob对象的一些属性.查看 BlobPropertyBag一节.

方法

slice()

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

Blob slice(
  optional long long start,
  optional long long end,
  optional DOMString contentType
};
参数
start  可选
开始索引,可以为负数,语法类似于数组的 slice方法.默认值为0.
end  可选
结束索引,可以为负数,语法类似于数组的 slice方法.默认值为 最后一个索引.
contentType  可选
新的 Blob对象的MIME类型,这个值将会成为新的 Blob对象的 type属性的值,默认为一个空字符串.
返回值

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

注意

如果start参数的值比源Blob对象的size属性的值还大,则返回的Blob对象的size值为0,也就是不包含任何数据.

BlobPropertyBag

一个包含有两个属性type和endings的对象.

type
设置该 Blob对象的 type属性.
endings(已废弃)
对应于 BlobBuilder.append()方法的 endings参数.该参数的值可以是"transparent"或者"native".

Blob构造函数用法举例

下面的代码:

var aFileParts = ["<a id=\"a\"><b id=\"b\">hey!<\/b><\/a>"];
var oMyBlob = new Blob(aFileParts, { "type" : "text\/xml" }); // the blob
  

等价于:

var oBuilder = new BlobBuilder();
var aFileParts = ["<a id=\"a\"><b id=\"b\">hey!<\/b><\/a>"];
oBuilder.append(aFileParts[0]);
var oMyBlob = oBuilder.getBlob("text\/xml"); // the blob
  

BlobBuilder接口提供了另外一种创建Blob对象的方式,但该方式现在已经废弃,所以不应该再使用了.

例子:使用类型数组和Blob对象创建一个对象URL

var typedArray = GetTheTypedArraySomehow();
var blob = new Blob([typedArray], {type: "application/octet-binary"}); // 传入一个合适的MIME类型
var url = URL.createObjectURL(blob);
// 会产生一个类似blob:d3958f5c-0777-0845-9dcf-2cb28783acaf这样的URL字符串
// 你可以像使用一个普通URL那样使用它,比如用在img.src上.
  

浏览器兼容性

  • Desktop 
  • Mobile
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 5 4 10 11.10 5.1
slice()

21
10 webkit‡

13
5 moz‡
10 12 5.1 (534.29) webkit
Blob() constructor 20 13.0 (13.0) 10 12.10 6 (536.10)

注意:关于slice()的实现

slice()方法一开始使用length来作为第二个参数,表示需要向新的Blob对象拷贝多少个字节.如果你指定的参数值start + length的值超过了源Blob对象的长度,则返回的Blob对象包含了从start索引到源Blob对象结束索引处的所有数据.

这个版本的slice()实现于Firefox 4, WebKit,以及 Opera 11.10中.可是,由于这个语法和我们常用的Array.slice()以及String.slice()语法不同,所以已被废弃.Gecko和WebKit目前支持的是新版的slice语法.

从Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10)和Chrome 21开始,slice()去掉了前缀.‡

Gecko备注

在Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9)之前,slice()方法有个bug,就是参数start和end的值不能超出64位无符号数字范围,现已修复.

相关链接

将HTML表格转换为Excel的JavaScript项目指南 HTML5引入了自定义数据属性(data attributes)的机制,允许开发者在标准的HTML元素上存储私有数据。这些数据属性以data-为前缀,后跟自定义的名称,可以附加到任何DOM元素上,而不影响文档的语义性。它们提供了一种标准的方法来存储额外的信息,这些信息可以被脚本用来实现交互功能,而不会破坏HTML的语义结构。例如,给一个div元素添加一个data-user属性:这段代码创建了一个div元素,并通过data-user属性存储了用户的用户名。 阅读详情

相关推荐

JavaScript实现HTML表格打印与Excel导出完整方案

在使用printArea进行打印时,一个常见痛点是:尽管页面上显示正常,但打印预览中却丢失了背景色、边框、字体样式甚至响应式布局的适配效果。这背后的根本原因在于浏览器默认会禁用某些 CSS 属性以节省墨水(尤其是在“仅文本”或“灰度打印”模式下),同时样式不会应用于打印环境。因此,要实现高质量的打印输出,必须主动干预样式渲染流程,确保关键视觉元素得以保留。

weixin_33419305的博客 812

JavaScript中的Blob你知道多少

很多开发者可能用过Blob,但是却并没有认真了解过Blob是什么?Blob的API有哪些?我们什么时候会用到Blob? 下面跟我一起详细了解下Blob吧~ 一、Blob 是什么 Blob(Binary Large Object)表示二进制类型的大对象。在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 通常是影像、声音或多媒体文件。在JavaScript中 Blob 类型的对象表示不可变的类似文件对象的原始数据。为了更直观的感受 Blob 对象,我们先来使用 Blob 构造函数,...

txun123的博客 1万+

Blob.js免费下载、Blob免费下载

文件名:Blob.js,免费下载,可以使用此js在前端导出xlsx表格数据

深入解析 JavaScript 中的 Blob 对象:二进制数据处理的核心

在现代 Web 开发中,处理二进制数据的能力对于构建高效、功能丰富的应用程序至关重要。JavaScript 的 Blob 对象作为核心组件之一,提供了强大的工具来创建、操作和传输大文件及多媒体内容。本文将详细探讨 Blob 对象的功能特性及其与 ArrayBuffer 和 TypedArray 的关系,解释如何使用 Blob 进行文件上传、下载、在线预览以及与其他 API 的集成。此外,还将介绍通过 FileReader 和 URL.createObjectURL() 方法实现的常见用例

cx18333的博客 3613

9.Vue前端使用iframe集成帆软报表的单点登录

CPT普通报表的地址:【帆软的服务http】+【/webroot/decision/view/report?【帆软的服务http】+【/webroot/decision/view/form?// fineReportHttp:帆软部署的地址。//如果为ie浏览器则页面加载完成后立即执行。// fineLinkSrc:帆软报表的url。//其他浏览器则重新加载onload事件。// 拿到配置的帆软报表的地址参数。//判断是否为ie浏览器。// 帆软报表登录和打开。// 帆软报表登录和打开。

qq_27860623的博客 4650

AT32F403A ADC采集实战:如何用V2库精准读取可变电阻电压(附完整代码)

本文详细介绍了基于AT32F403A微控制器和V2库实现高精度ADC采集的工程化方法。内容涵盖从基础的单通道轮询配置到多通道扫描与DMA传输的进阶应用,并重点分享了提升ADC采集精度的关键技巧,包括采样时间优化、软件滤波算法以及硬件布局考量,提供了完整的实战代码,帮助开发者解决数据跳动、稳定性等常见问题。

weixin_29189003的博客 93

JavaScript 的Blob 对象详解

引言浩瀚的互联网海洋中,数据的传输与存储扮演着至关重要的角色。如何高效、便捷地处理二进制数据,是前端开发人员面临的永恒挑战。问题在传统的 JavaScript 中,处理二进制数据是一项繁琐且容易出错的工作。我们需要使用各种各样的 API 和工具,才能将二进制数据转换为文本、图像、音频等格式。解决方案Blob 对象的出现,为我们带来了新的希望。它提供了一种简单、统一的方式来处理二进制数据,极大地简化了开发人员的工作。本文目标本文旨在深入剖析 Blob 对象,为你揭开它的神秘面纱。

爱蹦跶的全栈大A阿 3714

QOpenGL入门教程(二)—— 第一个QOpenGLWidget程序

终于到了实际操作的环节了,这一章我们要做的是: 创建OpenGL窗口 创建并编写着色器程序 为着色器程序装配顶点数据 启动渲染管线进行绘图 第一步:创建新项目 首先,我们使用Qt创建一个常规的QWidget项目,建议不要勾选ui设计器(个人习惯,笔者不太习惯于使用ui来设计) 第二步:创建QOpenGLWidget并实现三个虚函数 QOpenGLWidget Qt5.4之前,Qt可以通过一个QGLWidget类来创建OpenGL窗口,但由于opengl的发展,在5.4版本的时候,Qt提供

ItaLink 1万+

JS中的File(一):Blob对象详解

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

weixin_57208584的博客 1万+

二阶锥松弛在配电网最优潮流计算中的应用(IEEE33节点配电网最优潮流算例matlab程序)(yalmip+cplex)

文献[7]建立了以支路潮流计算为基础的OPF模型,针对OPF中的非凸性约束,采用SOCR技术将其松弛为二阶锥约束,整个 OPF 模型则被转化为二阶锥规划( Second Order Cone Programming,SOCP)问题,对其求解可以得到全局最优解。其次结合辐射型配电网潮流特点建立支路潮流约束,并考虑配电网中的可控单元,包括分布式电源和离散、连续无功补偿装置,建立其出力约束,该模型为非凸非线性模型;式中,αj,t和βij,t分别为t时段内节点i电压的二次方和支路ij电流的二次方。

weixin_47365903的博客 1万+

allegro转AD-(附工具)

本文介绍了将Allegro的.brd文件转换为Altium Designer可用的.alg文件的操作流程。首先需要下载专用转换工具,然后通过运行.bat脚本将.brd文件转换为.alg格式。最后在Altium Designer中使用导入向导完成文件转换,生成可用的PCB设计文件。整个过程简单快捷,只需三个步骤即可实现Allegro到Altium Designer的工程文件转换。

weixin_50120208的博客 1731

JS——blob

1、【HTML5】Blob对象 (1)写在前面:本小节主要介绍Blob对象属性及作用,通过demo介绍blob对象的应用场景。 blob对象:一直以来,JS都没有比较好的可以直接处理二进制的方法。而blob的存在,允许我们可以通过js直接操作二进制数据。 “一个blob对象就是一个包含有只读原始数据的类文件对象。blob对象中的数据并不一定得是JavaScript中的原生形式。file接口基于blob,继承了blob的功能,并且扩展支持了用户计算机上的本地文件” Blob对象可以看作是存放二进制

飞翔的熊blabla 7338

数字人(对嘴型 Lip-sync)数据集 LRS2 介绍(含网盘链接)

LRS2(Lip Reading Sentences 2)是牛津大学与BBC合作开发的一个大规模唇语识别数据集,专门用于训练和评估数字人唇语同步(Lip-sync)技术。该数据集包含数千条来自BBC电视节目的口语句子,每个句子长度最多100个字符。官方网站为:https://www.robots.ox.ac.uk/~vgg/data/lip_reading/lrs2.html可惜需要认证,不过我已经下载好并存到网盘里了,有需要可适用如下链接下载。(仅供学习,请勿传播)

iioSnail的博客 1687

前端性能优化、二进制、流(Stream)、缓冲区(Buffer)、图片文件转Base64,Base64转Blob,Blob转File对象、js和css与dom执行关系、游览器进程、woker、new

一、前端性能优化 1.http 从页面请求一个页面地址到返回看到全部数据的优化:强缓存/协商缓存、减少/合并请求数量、带宽、cdn的域名不同页面访问域名 2.资源大小 Js/css/html合并压缩 3.优化图片 雪碧图:优点减少请求,缺点图片资源过大,jpg有损压缩,压缩率大,没有图片透明,png兼容性好,可以图片透明,webp在ios和webview存在兼容性问题,svg矢量图,内嵌代码。 4.Css/js加载和执行 css写在head,js写在body(后面说为什么) 注意:GUI 渲染线程为什么与

weixin_30980795的博客 2661

TC8工作原理

OPEN组织由全世界主要整车厂和供应商组成,旨在推广以太网技术在车辆中的应用。OPEN下属多个技术委员会(Tech Committee,简称TC),对不同方面的技术细节进行量化定义,并发布相应规范。其中TC8规范包括车载以太网ECU从物理层到应用层的各层互操作性以及常规基础功能服务,目的在于提高不同ECU之间的兼容性 UpperTester UpperTester作为Tester与DUT的被测核心功能模块之间的中介,辅助完成测试。UpperTester的主要功能包括: 与Tester就测试模式切换/请.

jasonj333 5329

【智能模型系列】基于Unity和MediaPipe【手部追踪+手势识别】系统开发指南

在本文中,我将详细介绍一个基于MediaPipe的Unity手势识别系统,该系统能够识别多种常见手势(如拳头、点赞、胜利手势等),并提供完整的事件系统来处理手势状态变化。这个系统非常适合用于VR/AR交互、手势控制游戏或任何需要自然用户界面的应用场景。

纯技术流日常开发商业开发记录总结等 588

【JavaScript】使用a标签下载文件

可以通过download属性直接进行下载。 可以根据需要选择将文件数据转为Blob或Base64进行下载。如果您已经有文件数据,可以使用`fileToBlob`函数将其转为Blob对象并进行下载。如果您希望将文件数据转为Base64进行下载,可以使用`fileToBase64`函数将其转为Base64字符串,并使用`downloadBase64File`函数进行下载。

俊刚的博客 5498

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

excel文件下载下来损坏 js_js文件操作之——导出Excel (js-xlsx)

前阵子跟server同学讨论一个Excel导出的需求我说JS搞不定需要server来做被server同学强行打脸。今天研究了下尼玛不光可以还很强大了总结经验是害人的尤其是在发展迅速的前端圈儿and需要保持饥渴保持对新技术的敏感度。注以下只探讨现代浏览器1. 最简单的Excel导出原理js可以通过base64或者blob把一个包含一个的串导出成xx.xls格式。而Excel可以打开html文件。这样...

weixin_33346418的博客 1327

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用dom-to-image将html节点转换为图片,并使用UPNG压缩

domtoimage.toBlob(targetDom, options) .then(function (blob) { // console.log('dataUrl', dataUrl) // var link = document.createElement('a'); // link.do...

zhangyy130的专栏 571

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

原生js使用new Blob()实现带格式导出excel

导出效果 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <table id="table" border="1"> ...

九段刀客的博客 1万+

js将网页中的table中的数据导入到excel中方法

js将网页中的table中的数据导入到excel中的简单实现方法function method(tableid) { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application");

ouc大飞 799

前端使用Blob实现文件下载

问题来源:在项目中通常会有查询列表的功能,然后把通过筛选条件查出来的数据导入来,通常是导出excel表格这种格式 说人话:导出excel你咋实现? 人话有时候也不太容易理解?中。可以。没问题!直接上图 导出下面红色框中的一坨列表你咋实现 /** * 下载blob文件 * @param {*} blob 文件 * @param {*} fileName 文件名 */ const downl...

木槿之夏 1248

vue 使用Blob实现下载xls文件

1页面代码 <el-button size="mini" id='testBtn2' @click="test"><i class=" fa fa-search " aria-hidden="true"></i>下载 <a id='testBtn' >下载测试</a> </el-button> 2js代码 //...

小屁孩大帅-保密的博客 1414

WEB前端将指定DOM生成图片并下载最佳实践(html2canvas)

本文主要记录了前端使用html2canvas这个库将指定的dom转化为图片并进行下载,内含完整源码和效果图,希望能给你在解决同类型问题上带去不一样的思路~

零凌林的博客 2022

低代码oa表单中增加按钮

低代码oa表单中增加按钮

hhd的博客 380

js 把字符串保存为txt文件,并下载到本地

exportRaw('text.txt','Hello') function fakeClick(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", tru...

qq_36746815的博客 3031
上一篇: Servlet 3.0新特性
下一篇: 使用FormData对象
zljjava
博客等级 码龄15年 155粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值