js - 图片base64转file文件的两种方式

这篇具有很好参考价值的文章主要介绍了js - 图片base64转file文件的两种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近项目中需要实现把图片的base64编码转成file文件的功能,然后再上传至服务器。

1.通过new File()将base64转换成file文件,此方式需考虑浏览器兼容问题

	=====================1,把base64编码转为文件对象==========================
	第一个参数dataUrl是一个base64的字符串。第二个参数是文件名可以随意命名
    funtion base64toFile(dataurl, filename = 'file') {
      let arr = dataurl.split(',');
      let mime = arr[0].match(/:(.*?);/)[1];
      // suffix是该文件的后缀
      let suffix = mime.split('/')[1];
      // atob 对经过 base-64 编码的字符串进行解码
      let bstr = atob(arr[1]);
      // n 是解码后的长度
      let n = bstr.length;
      // Uint8Array 数组类型表示一个 8 位无符号整型数组 初始值都是 数子0
      let u8arr = new Uint8Array(n);
      // charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数
      while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
      }
      // new File返回File对象 第一个参数是 ArraryBuffer 或 Bolb 或Arrary 第二个参数是文件名
      // 第三个参数是 要放到文件中的内容的 MIME 类型
      return new File([u8arr], `${filename}.${suffix}`, {
        type: mime,
      });
    },

2.先将base64转换成blob,再将blob转换成file文件,此方法不存在浏览器不兼容问题

methods:{
 	//1,先将base64转换为blob
    dataURLtoBlob(dataurl) {
      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 Blob([u8arr], { type: mime });
    },
    //2,再将blob转换为file
    blobToFile(theBlob, fileName){
       theBlob.lastModifiedDate = new Date();  // 文件最后的修改日期
       theBlob.name = fileName;                // 文件名
       return new File([theBlob], fileName, {type: theBlob.type, lastModified: Date.now()});
    },

}
 

vue中配合vant的uploader上传组件使用案例:

	/* 单个文件上传案例 */
    afterRead(file) {
      // 1.先转为 blob格式  file.content是此文件的base64格式 
      let blob =  this.dataURLtoBlob(file.content);
      // 拿到文件名
      let fileName = file.file.name;
 
      // 2,在转为 file类型
      let file1 = this.blobToFile(blob,fileName);
      console.log("file1:",file1);
      
	 // 3,上传...
    },

打印结果如下:
base64转file,javascript,前端,开发语言文章来源地址https://www.toymoban.com/news/detail-634701.html

到了这里,关于js - 图片base64转file文件的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 使用【Blob、Base64】两种方式显示【文本、图片、视频】 & 使用 video 组件播放视频

    Blob 对象的类型是由 MIME 类型(Multipurpose Internet Mail Extensions)来确定的。MIME 类型是一种标准,用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型: text/plain :纯文本文件。 text/html :HTML文件。 text/xml :XML文件。 image/png :PNG格式的图像

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

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

    2024年02月04日
    浏览(69)
  • 前端FileReader对象实现图片file文件转base64

    1、file转base64具体代码 2、原理解析 ​ 上面封装的方法,其原理主要是借助 FileReader 对象来实现图片格式的转换, FileReader 对象中的 readAsDataURL() 方法,可以读取一个 File 或 Blob 类型的文件,并将其转换为base64格式的字符串。但要注意的一点是:我们通过 readAsDataURL() 方法去读

    2023年04月09日
    浏览(40)
  • SpringBoot+Vue项目中遇到Not allowed to load local resource图片路径问题的两种解决方案(在后端映射本地路径或将图片转base64返回给前端)

    后端映射本地路径 转base64格式返回 如果是少量图片可以这么操作,不然图片多的话返回base64由于字符太长,传输速度很慢,会导致卡顿现象、加载慢、加载异常等情况出现。 图片转base64 base64转图片保存 headPhotoPath = “D:yangleProjectImageLocationheadPhoto” userPhotoPath = “nologin”

    2024年02月06日
    浏览(50)
  • uniapp图片转base64及JS各文件类型相互转换

    App H5 微信小程序 快手小程序 京东小程序 √ √ √ √ √ 功能限制主要在arrayBufferToBase64 微信小程序 字节跳动小程序 QQ小程序 √ √ √ 功能限制主要在getFileSystemManager H5 √ 功能限制主要在FileReader实例上 在 JavaScript 中的经常用到的二进制的格式有三种: ArrayBuffer:用来表示通

    2024年02月08日
    浏览(52)
  • 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日
    浏览(57)
  • 图片格式转换(File、Blob、base64)

    前言 记录一下比较常见的图片格式(File、Blob、base64)在不同的场景他们之间的相互转换的方法。 一、类型简介 Blob BLOB(binary large object): 二进制大对象,是一个可以存储二进制文件的容器。 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。 属性名称 读/写 描

    2024年02月02日
    浏览(68)
  • 【base64】JavaScript&uniapp 将图片转为base64并展示

    Base64是一种用于编码二进制数据的方法,它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中,通过将二进制数据转换为可打印字符的形式进行传输  图片大小从1.36MB到169kb 上面的代码中,toDataURL产生的是图片的base64编码,Base64编码必须是完整且正确

    2024年02月11日
    浏览(46)
  • js:File和Base64(DataURL)互相转换

    使用 使用 在线示例:https://mouday.github.io/front-end-demo/base64-file/base64-file.html 参考 js 把base64转file文件的两种方式 JS实现将文件和base64的相互转换

    2024年02月15日
    浏览(41)
  • js里base64与file之间的转换

    在 js中,可以使用 Blob 对象将 base64 字符串转换为 File 对象。 方法一、base64 直接转换为 File 对象: 首先, 需要从 base64 字符串中获取文件类型, 然后将文件类型和 base64 字符串转换为 Blob 对象。最后, 使用 Blob 对象构造函数创建一个 File 对象。 下面是一个示例函数,它接收一个

    2024年02月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包