JS 图片base64与file_blob的相互转换的方法实现

 更新时间:2025年07月25日 11:13:53   作者:喜欢代码的新之助  
在开发中,经常会遇到需要将base64编码的图片转换为file文件格式用于上传的情况,下面就来介绍一下base64与file_blob的相互转换,感兴趣的可以了解一下

在开发中,经常会遇到需要将base64编码的图片转换为file文件格式用于上传的情况;图片base64编码转换为file格式过程中,思路:base64 --> Uint8Array --> new File()

具体实现方法如下,封装在文件xxx.js中,放置于项目文件夹utils下,开发中直接引入调用即可:

/**
 * Base64 转 File
 * @param base64 String base64格式字符串
 * @param filename String 文件名称或者文件路径
 * @param contentType String file对象的文件类型,如:"image/png"
 */
 export function base64ToFile(base64, filename, contentType){
     var arr = base64.split(',')  //去掉base64格式图片的头部
     var bstr = atob(arr[1])   //atob()方法将数据解码
     var leng = bstr.length
     var u8arr = new Uint8Array(leng)
     while(leng--){
        u8arr[leng] =  bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 编码
     }
     return new File([u8arr], filename, {type:contentType}) 
 }

/**
* Base64转Blob
* @param base64 String base64格式字符串
* @param contentType String blob对象的文件类型,如:"image/png"
*/
function base64ToBlob(base64, contentType){
	var arr = base64.split(',')  //去掉base64格式图片的头部
	var bstr = atob(arr[1])   //atob()方法将数据解码
	var leng = bstr.length
	var u8arr = new Uint8Array(leng)
	while(leng--){
		u8arr[leng] =  bstr.charCodeAt(leng) //返回指定位置的字符的 Unicode 编码
	}
	var blob = new Blob([u8arr],{type:contentType})
	var blobImg = {}
	blobImg.url = URL.createObjectURL(blob )  //创建URL,
	blobImg.name = new Date().getTime() + '.png'
	return blobImg
}

/**
 * File 转 Base64
 * @param file Object 文件对象流
 */
 export function fileToBase64(file){
	return new Promise((resolve) => {
		var reader = new FileReader()
		reader.readAsDataURL(file)  
		//读取后,result属性中将包含一个data:URL格式的Base64字符串用来表示所读取的文件
		reader.onload = function(e){
			resolve(e.target.result)
		}
     })
 }

/**
* Blob 转 Base64
* @param blob Object blob对象
*/
export function blobToBase64(blob){
	return new Promise((resolve) => {
		var reader = new FileReader()
		reader.readAsDataURL(blob)  
		//读取后,result属性中将包含一个data:URL格式的Base64字符串用来表示所读取的文件
		reader.onload = function(e){
			resolve(e.target.result)
		}
     })
}

使用:引入xxx.js文件,调用方法

// 注意引入路径不要出错
import { base64ToFile, base64ToBlob, fileToBase64, blobToBase64 } from '@/utils/xxx.js'

const file = base64ToFile(base64, 'picture', 'image/png')
// 输出File对象
console.log(file)

const blob = base64ToBlob(base64, 'image/png')
// 输出blob对象
console.log(blob)

fileToBase64(file).then(res => {
	// 输出图片base64
	console.log(res)
}).catch(err => {
	console.log(err)
})

blobToBase64(blob).then(res => {
	// 输出图片base64
	console.log(res)
}).catch(err => {
	console.log(err)
})

到此这篇关于JS 图片base64与file_blob的相互转换的方法实现的文章就介绍到这了,更多相关JS 图片base64与file_blob转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js+html5实现canvas绘制镂空字体文本的方法

    js+html5实现canvas绘制镂空字体文本的方法

    这篇文章主要介绍了js+html5实现canvas绘制镂空字体文本的方法,涉及html5文字效果的相关技巧,需要的朋友可以参考下
    2015-06-06
  • javascript实现智能手环时间显示

    javascript实现智能手环时间显示

    这篇文章主要为大家详细介绍了javascript实现智能手环时间显示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 总结Javascript中数组各种去重的方法

    总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的下面来一起看看。
    2016-10-10
  • JS中通过slice()&substring()截取字符串前几位的方法

    JS中通过slice()&substring()截取字符串前几位的方法

    在Javascript使用字符串中,我们不一定需要全部的字符串,这时就需要截取字符串,本文主要介绍js中截取字符串前几位的两种方法:1、使用slice() 方法;2、使用substring() 方法,本文通过示例代码介绍的非常详细,需要的朋友参考下吧
    2023-12-12
  • TypeScript接口和类型的区别小结

    TypeScript接口和类型的区别小结

    在 TypeScript 中,有两种主要的定义自定义类型的方式,接口和类型,尽管它们在外观上可能相似,但它们之间有一些关键的区别,本文就详细的介绍一下,感兴趣的可以了解下
    2023-05-05
  • 原生JS实现图片跑马灯特效

    原生JS实现图片跑马灯特效

    这篇文章主要为大家详细介绍了原生JS实现图片跑马灯特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • layui 富文本图片上传接口与普通按钮 文件上传接口的例子

    layui 富文本图片上传接口与普通按钮 文件上传接口的例子

    今天小编就为大家分享一篇layui 富文本图片上传接口与普通按钮 文件上传接口的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • TypeScript声明合并的实现

    TypeScript声明合并的实现

    本文主要介绍了TypeScript声明合并的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • javascript中闭包概念与用法深入理解

    javascript中闭包概念与用法深入理解

    这篇文章主要介绍了javascript中闭包概念与用法,结合实例形式深入分析了javascript中闭包的概念、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • layui文件上传控件带更改后数据传值的方法

    layui文件上传控件带更改后数据传值的方法

    今天小编就为大家分享一篇layui文件上传控件带更改后数据传值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09

最新评论