vue中把http/https图片通过base64显示出来

1、创建XHR对象,调用XMLHttpRequest构造函数
2、启动请求以备发送数据
3、设置返回响应数据的类型
4、发送数据
5、调用FileReader对象的方法,将文件读取为二进制码
6、readAsDataURL 方法可以将读取到的文件编码成DataURL
7、onload文件读取成功时触发

 _downLoad(url) {
      const url2 = url.replace(/\\/g, "/");
      const xhr = new XMLHttpRequest();
      xhr.open("GET", url2, true);
      xhr.responseType = "blob";
      xhr.onload = () => {
        if (xhr.status === 200) {
          //下载
          this.download(xhr.response)
          
          //获取base64 start
          const reader = new FileReader();
          reader.onloadend = () => {
            console.log(reader);
          };
          reader.readAsDataURL(xhr.response);
           //获取base64 end

        }
      };
      xhr.send();
    }

获取文件流并下载

download(blob, filename) {
      const a = document.createElement("a");
      a.download = filename;
      const blobUrl = URL.createObjectURL(blob);
      a.href = blobUrl;
      document.body.appendChild(a);
      a.click();
      a.remove();
      URL.revokeObjectURL(blobUrl);
    },

其他知识点

1:FileReader : 读取文件内容
readAsText() 读取文本文件,(可以使用Txt打开的文件)
readAsBinaryString(): 读取任意类型的文件,返回二进制字符串
readAsDataURL: 方法可以将读取到的文件编码成DataURL ,可以将资料(例如图片、excel文件)内嵌在网页之中,不用放到外部文件
abort: 中断读取

2:FileReader 提供一个完整的事件模型,用来捕获读取文件的状态
onabort:读取文件断片时触发
onerror:读取文件错误时触发
onload:文件读取成功时触发
onloadend:文件读取完毕之后,不管成功还是失败触发
onloadstart: 开始读取文件时触发
onprogress:读取文件过程中触发

responseType类型

key含义
“”responseType 为空字符串时,采用默认类型 DOMString,与设置为 text 相同。
arraybufferresponse 是一个包含二进制数据的 JavaScript ArrayBuffer
blobresponse 是一个包含二进制数据的 Blob 对象 。
documentresponse 是一个 HTML Document 或 XML XMLDocument,这取决于接收到的数据的 MIME 类型。
jsonresponse 是一个 JavaScript 对象。这个对象是通过将接收到的数据类型视为 JSON 解析得到的。
textresponse 是一个以 DOMString 对象表示的文本。
ms-streamresponse 是下载流的一部分;此响应类型仅允许下载请求,并且仅受 Internet Explorer 支持。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值