当前位置:网站首页>Blob 对象介绍

Blob 对象介绍

2022-07-07 04:58:00 丢丢的大神

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,
    };
  }
};
原网站

版权声明
本文为[丢丢的大神]所创,转载请带上原文链接,感谢
https://wuchao.blog.csdn.net/article/details/125640499