一、首先知道你要转换的编码格式:

log一下就能看到:

Blob:

 二进制

 File

 二、File转Blob

// 原生
<input class="ut myHide" id="uploadFile" name="uploadFile" type="file" onchange="btnUploadFile(event)" /> 

function btnUploadFile(e){
     //获取图片文件 
      var imgFile = e.target.files[0]; 
      var imgBlob = URL.createObjectURL(imgFile ); 
}

三、Blob转File(详见:使用js将blob对象转file对象_x先生的博客-CSDN博客_blob转file)

var imgBlob = Blob格式图片

var imgFile = new window.File([imgBlob], Math.random(), {
          type: imgBlob.type,
        });

四、Blob 转 二进制(base64)

获取 img 的 dom,这里命名为 img

 function base64 (dom) {
  const canvas = document.createElement('canvas')
  const ctx = canvas.getContext('2d')
  canvas.width = dom.width
  canvas.height = dom.height
  ctx?.drawImage(dom, 0, 0, dom.width, dom.height)
  return canvas.toDataURL('image/png')
 }

五、二进制转blob,并下载

这是一个二进制样例,只要后端返回的文件格式是这种,就是二进制

"UEsDBBQAAAgIALykX1kxSZgR8gAAANMCAAALAAAAX3JlbHMvLnJlbHOs0kFOwzAQBdCrWN43kxaEEKrbDZvuEOICxp4kVmKPZU8gnI0FR+IKWEKCtiqhiy5t//l+i/l8/1hvJz+IF0zZUVByWdVSbVz+pvvbnFhyyG3AgXbDffkdowLrsaOnlvnzqKKyq+MJE3/zBy2cayUZruPAxmiC3WEZWAckC6c

      let base64Data = "efeQ4455bdrgregr"
  
      // 将Base64字符串转换为Uint8Array
      const byteCharacters = atob(base64Data);
      const byteNumbers = new Array(byteCharacters.length);
      for (let i = 0; i < byteCharacters.length; i++) {
          byteNumbers[i] = byteCharacters.charCodeAt(i);
      }
      const byteArray = new Uint8Array(byteNumbers);
  
      // 创建Blob对象
      const blob = new Blob([byteArray]);
  
      // 创建URL和<a>标签以触发下载
      const url = window.URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = 'output.png'; // 文件名
      a.click();
  
      // 清理资源
      window.URL.revokeObjectURL(url);

、后面用到再写

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐