Blob 对象介绍

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

看下面代码,可以使用文本构造 Blob 对象

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

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

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

另一种读取 Blob 中内容的方式是使用 Response 对象。

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

某些时候后台下载文件返回到前端被转换为 Blob 对象,正常下载时,返回正确的文件流,异常时,后台返回一段包含错误信息的 json ,这时候需要提示用户下载失败,看下面代码

/**
 * 格式化 blob 返回值
 * @param {*} res
 */
const formatBlobResponse = async (res) => {
  const text = await new Response(res).text();
  let textObj = {};
  try {
    textObj = JSON.parse(text);
  } catch (e) {}

  if (text === '' || (textObj.code && Number(textObj.code) !== 200)) {
    return {
      success: false,
      msg: textObj.msg || '下载文件失败,请联系管理员',
    };
  } else {
    return {
      success: true,
      data: res,
    };
  }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Blob 对象是一种表示不可变的二进制数据的类型,类似于文件对象。在 Web 开发中,Blob 对象主要用于处理二进制数据,例如上传和下载文件、处理音频和视频数据等。Blob 类型的对象可以通过构造函数 new Blob(data, options) 来创建,其中 data 是一个数组或者数组缓冲区,用于存储二进制数据;options 是一个可选参数,用于指定 Blob 对象的 MIME 类型。 Blob 对象具有以下特点: 1. Blob 对象是不可变的,即创建后无法修改。 2. Blob 对象具有 size 属性,表示 Blob 对象的大小(字节数)。 3. Blob 对象具有 type 属性,表示 Blob 对象的 MIME 类型。 对于 Blob 对象的基本用法,可以使用 slice 方法对 Blob 对象进行切割,生成新的 Blob 对象。slice 方法接受两个参数,start 和 end,表示切割的起始位置和结束位置(不包含结束位置),返回一个新的 Blob 对象。 例如,以下是 Blob 对象的基本用法的示例: ```javascript var data = "abcdef"; var blob1 = new Blob([data]); var blob2 = blob1.slice(0, 3); console.log(blob1); // 输出:Blob {size: 6, type: ""} console.log(blob2); // 输出:Blob {size: 3, type: ""} ``` 另外,Blob 对象创建时,可以传入不同类型的数据,例如字符串、数组、对象等。Blob 对象会根据传入的数据类型进行相应的处理。 例如,以下是创建 Blob 对象时传入不同类型数据的示例: ```javascript var data1 = "a"; var data2 = "b"; var data3 = "<div style='color:red;'>This is a blob</div>"; var data4 = { "name": "abc" }; var blob1 = new Blob([data1]); // Blob 对象的 size 为 1 var blob2 = new Blob([data1, data2]); // Blob 对象的 size 为 2 var blob3 = new Blob([data3]); // Blob 对象的 size 为 44 var blob4 = new Blob([JSON.stringify(data4)]); // Blob 对象的 size 为 14 var blob5 = new Blob([data4]); // Blob 对象的 size 为 15 var blob6 = new Blob([data3, data4]); // Blob 对象的 size 为 59 console.log(blob1); console.log(blob2); console.log(blob3); console.log(blob4); console.log(blob5); console.log(blob6); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丢丢的大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值