base64 Blob 进行拼接 base64拼接 Blob拼接 (讯飞接口)

1.字符串base 编码
npm下载

npm install --save js-base64

引入

let Base64 = require("js-base64").Base64;

import { Base64 } from 'js-base64';

使用

    Base64.encode("潘高"); // 5r2Y6auY
    Base64.decode("5r2Y6auY"); // 潘高

系统文件base64编码

解码使用 atob() base-64 编码的字符串。

编码使用方法是 btoa() base-64

ArrayBuffer TypedArray DataView 二进制数据 虽然不是很明白 但先记录一下 参考链接 https://www.cnblogs.com/jixiaohua/p/10714662.html

base转ArrayBuffer

function base64ToUint8Array(base64String) {
    const padding = '='.repeat((4 - base64String.length % 4) % 4);
       const base64 = (base64String + padding)
                    .replace(/\-/g, '+')
                    .replace(/_/g, '/');

       const rawData = window.atob(base64);
       const outputArray = new Uint8Array(rawData.length);

       for (let i = 0; i < rawData.length; ++i) {
            outputArray[i] = rawData.charCodeAt(i);
       }
       return outputArray;
}

ArrayBuffer --> base64

function arrayBufferToBase64(buffer) {
         var binary = '';
         var bytes = new Uint8Array(buffer);
         var len = bytes.byteLength;
         for (var i = 0; i < len; i++) {
               binary += String.fromCharCode(bytes[i]);
         }
         return window.btoa(binary);
}

来自:https://www.cnblogs.com/zyulike/p/10573324.html new Blob([uInt8Array], { type: contentType })操作二进制对象

base64 拼接 转Blob对象操作

 // 建立WebSocket
    socket(url) {
      let socket = new WebSocket(url);
      let au = [];
      socket.onopen = () => {
        socket.send(JSON.stringify(this.wxsData));
      };
       socket.onmessage = function(res) {
        if (res && res.data) {
          let data = JSON.parse(res.data);
          console.log(data, "data");
          if (data.code == 0) {
            au.push("data:audio/wav;base64," + data.data.audio);
            if (data.data.status == 2) {
              let rawLength = 0,
                contentType = "",
                parts = "",
                raw = "";
                 au.forEach(code => {
                parts = code.split(";base64,");
                contentType = parts[0].split(":")[1];
                raw += window.atob(parts[1]);
                rawLength += raw.length;
              });
               let uInt8Array = new Uint8Array(rawLength);
              for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
              }
              let xx = new Blob([uInt8Array], { type: contentType });
              let myAuto = document.createElement("audio");
              myAuto.src = URL.createObjectURL(xx);
              myAuto.play();
               }
          }
        }
        // audio(res);
      };
      socket.onerror = function(err) {
        console.log(err, "-----------err");
      };
      socket.onclose = function(end) {
        console.log(end, "--------------end");
      };
      }

@[TOC](base64 拼接 转Blob对象操作(简化) )

 // 建立WebSocket
    socket(url) {
      let socket = new WebSocket(url);
      let au = '';
      socket.onopen = () => {
        socket.send(JSON.stringify(this.wxsData));
      };
       socket.onmessage = function(res) {
        if (res && res.data) {
          let data = JSON.parse(res.data);
          console.log(data, "data");
          if (data.code == 0) {
            au += data.data.audio);
            if (data.data.status == 2) {
          
              let rawLength = au.length;
              let uInt8Array = new Uint8Array(rawLength);
              for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = au.charCodeAt(i);
              }
              let xx = new Blob([uInt8Array], { type: "audio/wav" });
              let myAuto = document.createElement("audio");
              myAuto.src = URL.createObjectURL(xx);
              myAuto.play(); 
               }
          }
        }
        // audio(res);
      };
      socket.onerror = function(err) {
        console.log(err, "-----------err");
      };
      socket.onclose = function(end) {
        console.log(end, "--------------end");
      };
      }

base64 拼接 转Blob对象 fileReader 转base64

 // 建立WebSocket
    socket(url) {
      let socket = new WebSocket(url);
      let au = '';
      socket.onopen = () => {
        socket.send(JSON.stringify(this.wxsData));
      };
       socket.onmessage = function(res) {
        if (res && res.data) {
          let data = JSON.parse(res.data);
          console.log(data, "data");
          if (data.code == 0) {
            au += data.data.audio);
            if (data.data.status == 2) {
            
               
               let uInt8Array = new Uint8Array(rawLength);
              for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
              }
             let xx = new Blob([uInt8Array], { type: "audio/wav" });

              const fileReader = new FileReader();
              fileReader.onload = e => {
              console.log(e.target.result, "e.target.result");
              let myAuto = document.createElement("audio");
              myAuto.src = e.target.result;
              myAuto.play();
               };
               // readAsDataURL
               fileReader.readAsDataURL(xx);           
              // readAsDataURL
              /*reader.abort()                 // 取消文件读取操作
               reader.readAsArrayBuffer()      // 返回一个 ArrayBuffer 的数据对象
               reader.readAsBinaryString()     // 返回原始二进制数据内容 (实验性的api)
               reader.readAsDataURL()          // 返回 base64 内容
               reader.readAsText()                // 返回文本内容
             // 上述方法皆对于 file 或 blob 有效
             //fileReader.readAsDataURL(xx);

               }
          }
        }
        // audio(res);
      };
      socket.onerror = function(err) {
        console.log(err, "-----------err");
      };
      socket.onclose = function(end) {
        console.log(end, "--------------end");
      };
      }

base64 拼接 转Blob对象 fromCharCode转base64

 // 建立WebSocket
    socket(url) {
      let socket = new WebSocket(url);
      let au = '';
      socket.onopen = () => {
        socket.send(JSON.stringify(this.wxsData));
      };
       socket.onmessage = function(res) {
        if (res && res.data) {
          let data = JSON.parse(res.data);
          console.log(data, "data");
          if (data.code == 0) {
            au += data.data.audio);
            if (data.data.status == 2) {
            
               
               let uInt8Array = new Uint8Array(rawLength);
              for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
              }
               function arrayBufferToBase64(buffer) {
                var binary = "";
                var bytes = new Uint8Array(buffer);
                var len = bytes.byteLength;
                for (var i = 0; i < len; i++) {
                  binary += String.fromCharCode(bytes[i]);
                }
                return window.btoa(binary);
              }


              let xx = arrayBufferToBase64(uInt8Array);
              let myAuto = document.createElement("audio");
              myAuto.src = "data:audio/wav;base64,"+ xx;
              myAuto.play();                 
   

               }
          }
        }
        // audio(res);
      };
      socket.onerror = function(err) {
        console.log(err, "-----------err");
      };
      socket.onclose = function(end) {
        console.log(end, "--------------end");
      };
      }

@[TOC](使用atob() 和btoa() )

   socket(url) {
      let socket = new WebSocket(url);
      let au = '';
      socket.onopen = () => {
        socket.send(JSON.stringify(this.wxsData));
      };
       socket.onmessage = function(res) {
        if (res && res.data) {
          let data = JSON.parse(res.data);
          console.log(data, "data");
          if (data.code == 0) {
            au += data.data.audio);
            if (data.data.status == 2) {
            
               
               let uInt8Array = new Uint8Array(rawLength);
              for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
              }
               function arrayBufferToBase64(buffer) {
                var binary = "";
                var bytes = new Uint8Array(buffer);
                var len = bytes.byteLength;
                for (var i = 0; i < len; i++) {
                  binary += String.fromCharCode(bytes[i]);
                }
                return window.btoa(binary);
              }


              let xx = arrayBufferToBase64(uInt8Array);
              let myAuto = document.createElement("audio");
              myAuto.src = "data:audio/wav;base64,"+ xx;
              myAuto.play();                 
   

               }
          }
        }
        // audio(res);
      };
      socket.onerror = function(err) {
        console.log(err, "-----------err");
      };
      socket.onclose = function(end) {
        console.log(end, "--------------end");
      };
      }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web修理工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值