js:File和Base64(DataURL)互相转换

这篇具有很好参考价值的文章主要介绍了js:File和Base64(DataURL)互相转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

File转Base64(DataURL)

/**
 * file 转Base64 DataURL
 * @param {File} file
 * @returns
 */
function fileToBase64Async(file) {
  return new Promise((resolve, reject) => {
    let reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = (e) => {
      resolve(e.target.result);
    };
  });
}

使用

await fileToBase64Async(file)

Base64(DataURL)转 File

/**
 * 解析base64中的数据信息
 * @param {String} base64
 * @returns
 */
function parseBase64(base64) {
  let arr = base64.split(","),
    mime = arr[0].match(/:(.*?);/)[1];

  return {
    mime,
    data: arr[1],
  };
}

/**
 * base64转Uint8
 * @param {String} base64
 * @returns
 */
function base64ToUint8Array(base64) {
  let parsedBase64 = parseBase64(base64);

  let bstr = atob(parsedBase64.data);
  let n = bstr.length;
  let u8arr = new Uint8Array(n);

  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }

  return u8arr;
}

/**
 * 将base64转换为blob
 * @param {String} base64
 * @returns
 */
function base64ToBlob(base64) {
  let parsedBase64 = parseBase64(base64);
  let u8arr = base64ToUint8Array(base64);
  return new Blob([u8arr], { type: parsedBase64.mime });
}

/**
 * 将blob转换为file
 * @param {Blob} blobData
 * @returns
 */
function blobToFile(blobData) {
  let date = new Date();

  blobData.lastModifiedDate = date;
  blobData.lastModified = date.getTime();
  blobData.name = blobData.type.replace("/", ".");

  return blobData;
}

/**
 * base64 转 File
 * @param {String} base64
 * @returns
 */
function base64ToFile(base64) {
  let file = null;

  // 浏览器兼容
  if (window.File != undefined) {
    let parsedBase64 = parseBase64(base64);
    let u8arr = base64ToUint8Array(base64);
    file = new File([u8arr], parsedBase64.mime.replace("/", "."), {
      type: parsedBase64.mime,
    });
  } else {
    file = blobToFile(base64ToBlob(base64));
  }

  return file;
}

使用

base64ToFile(base64)

在线示例:https://mouday.github.io/front-end-demo/base64-file/base64-file.html

参考
js 把base64转file文件的两种方式
JS实现将文件和base64的相互转换文章来源地址https://www.toymoban.com/news/detail-613735.html

到了这里,关于js:File和Base64(DataURL)互相转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JS】前端base64转图片File对象

    base64ToFile.js

    2024年02月05日
    浏览(38)
  • js - 图片base64转file文件的两种方式

    最近项目中需要实现把图片的base64编码转成file文件的功能,然后再上传至服务器。 1.通过new File()将base64转换成file文件,此方式需考虑浏览器兼容问题 2.先将base64转换成blob,再将blob转换成file文件,此方法不存在浏览器不兼容问题 vue中配合vant的uploader上传组件使用案例: 打

    2024年02月14日
    浏览(36)
  • 将html字符串中的base64图片转换成file并上传

    目的 解决富文本编辑器中复制粘贴的图片 base64 字符串过长导致无法存储到数据库的问题 思路 通过正则 获取html字符串中里面的所有图片 base64 数组 然后每个图片base64 转成file 使用上传文件的函数 上传到服务器上. 将上传后获取到的图片访问url 替换成 数据里面的 img 的 src

    2024年01月23日
    浏览(44)
  • JS前端读取本地上传的File文件对象内容(包括Base64、text、JSON、Blob、ArrayBuffer等类型文件)

    FileReader.readAsArrayBuffer() - Web API 接口参考 | MDN FileReader 接口提供的 readAsArrayBuffer() 方法用于启动读取指定的 Blob 或 File 内容。当读取操作完成时,readyState 变成 DONE(已完成),并触发 loadend 事件,同时 result 属性中将包含一个 ArrayBuffer 对象以表示所读取文件的数据。 https://

    2024年02月15日
    浏览(39)
  • Base64转二进制文件流以及转File、图片转Base64、二进制流转Base64

    1、Base64转二进制文件流 方法一: 调用示例: 方法二: 调用示例:  2、Base64转File 方法一: 调用示例: 方法二: 调用示例: 补充: 3、图片转Base64 调用示例: 4、二进制流转Base64 方法一: 调用示例: 方法二: 调用示例: 5、补充 5.1 atob() atob()  对经过 base-64 编码的字符

    2024年02月04日
    浏览(43)
  • 前端base64转file文件方法

    有这样一种场景,比如canvas截取部分dom作为图片,上传到服务器,而canvas截取的图片返回的是base64字符串,而服务器接收的是file文件。因此我们需要将base64字符串转成file文件,存储到服务器中。 方法一:通过new File(),将base64直接转成file文件。 (此方法需要考虑浏览器兼容

    2024年02月11日
    浏览(26)
  • 文件流互相转换(blob转base64,二进制流)

    跟用input上传文件的获取到的差不多 用URL.createObjectURL(blob)转化后是这样

    2024年02月10日
    浏览(35)
  • Java Base64 和 File 之间互转

    1、Base64 转 File 2、File 转 Base64

    2024年02月16日
    浏览(32)
  • base64转二进制流,file文件

    base64转二进制流 img标签src属性,可以直接使用base64字符串,base64需要先解码,然后再转为流 base64转file img标签src属性,可以直接使用base64字符串,base64需要先解码,然后再转为文件 文件转base64 流转base64

    2024年02月13日
    浏览(23)
  • 谈谈:File、Blob、FileReader、ArrayBuffer、base64

    JavaScript 提供了一些 API 来处理文件或原始文件数据,例如:File、Blob、FileReader、ArrayBuffer、base64 等。下面就来看看它们都是如何使用的,它们之间又有何区别和联系。 1. Blob Blob全称为binary large Object 即二进制大对象,他是js中的一个对象,表示原始类似文件的数据。MDN中的解

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包