阅读 300

base64与File转换

互相转换

  function base64ToFile(dataurl, filename) { //将base64转换为文件
    var arr = dataurl.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);

    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {
      type: mime
    });
  }
  function fileToBase64(file) {
    return new Promise((resolve, reject) => {
      var reader = new FileReader();

      reader.readAsDataURL(file);
      reader.onload = () => {
        resolve(reader.result);
      }
      reader.onerror = function (error) {
       reject(error);
      }
    });

  }

  let str = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEsSURBVEhL7ZQhq4NQAIXfn1REYXVgEMSwMFnzJxhWB0trFoMwWDc4LAbH0GBYsAmbU8/jjuvjuet4cPW298Epx8v5wlW/IJh/wZ+MCu73O+I4RhiGtOFnVFCWJWzbxmKxoM1nrtcrttstns8nbYZ8FKxWK0iSRBuWpmmQJAkMw3idK4qCPhnCJaiqCp7nYblcvs7MLnBdF7Is/4zPImjbFlmWwXGcwXCfyYIoimCaJjPch1tAXlnf95nB93AL9vs9NE1jBt/DLdjtdlAUhRl8D7fg8XjgeDxC13Vm9HcmX3KaprAsixnuM1lAICObzQaqqooREMhXfDgcXv8pIYKe0+kkVkA4n89Yr9fiBF3X4Xa7IQgC1HVN2yGjAnI4z3NcLhfa8DMqmBPBAuAbO6MPaFHs+JIAAAAASUVORK5CYII=';
  let file = base64ToFile(str, '123.png');
  console.log(file);
  fileToBase64(file).then(bstr=>{
    console.log(bstr);
    console.log(bstr === str); //true
  });

File

File对象的构造函数为:
File(bits, name, options)

1) bits (required)

ArrayBuffer,Blob,Array[string] ,或者任何这些对象的组合。都是 UTF-8 编码的文件内容。

2) name [String] (required)

文件名称,或者文件路径。

3)options [Object] (optional)

选项对象,包含文件的可选属性。

var file = new File([blob], 'test.png', {type: 'image/png'});

FileReader

FileReader有以下几种读取文件数据的方法:

1)readAsText(file,encoding)

以纯文本的形式读取文件,将读取到的文件保存到result属性。encoding参数用于指定编码类型,是可选的。

2)readAsDataURL(file)

读取文件并将文件数据以URL形式保存到result属性中。(读取图像文件常用方法)

3)readAsBinaryString(file)

读取文件并将一个字符串保存在result属性中,字符串中的每个字符表示一字节。

4)readAsArrayBuffer(file)

读取文件并将一个包含文件内容的ArrayBuffer保存在result属性中。

作者:姜治宇

原文链接:https://www.jianshu.com/p/9973e0ac7fa2

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐