Blob 对象

2020-12-05  本文已影响0人  废弃的种子

介绍

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

Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。

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

使用场景

1、分片上传
2、下载数据
3、Blob用作URL
4、Blob转换为Base64
5、图片压缩
6、生成PDF

文件下载

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Blob</title>
</head>
<img src="" alt="">
<body>

  <script>
    // let blob = new Blob(['daasdasdsad']);
    // console.log(blob);
    // 下载图片
    let img = document.querySelector('img')
    function downloadimg(url) {
      let xhr = new XMLHttpRequest();
      xhr.open("GET", url);
      xhr.responseType = "blob"
      xhr.send();
      xhr.onreadystatechange = () => {
        if (xhr.readyState !== 4) {
          return;
        }
        const status = xhr.status;
        if ((status >= 200 && status < 300) || status === 304) {
          let bloburl = URL.createObjectURL(xhr.response);
          img.setAttribute("src", bloburl)
          //创建a标签
          const domA = document.createElement("a")
          domA.innerText = "下载"
          domA.setAttribute("download", '文件名字')
          domA.setAttribute("href", bloburl)
          document.body.appendChild(domA)
          // domA.click();
        } else {
          console.log('request error');
        }
      };
    }
    downloadimg("https://i0.hdslb.com/bfs/sycp/creative_img/202012/51be27723baa50aa525376c20d35256e.jpg");
  </script>
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读