欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS?圖片base64與file_blob的相互轉(zhuǎn)換的方法實(shí)現(xiàn)

 更新時(shí)間:2025年07月25日 11:13:53   作者:喜歡代碼的新之助  
在開發(fā)中,經(jīng)常會(huì)遇到需要將base64編碼的圖片轉(zhuǎn)換為file文件格式用于上傳的情況,下面就來介紹一下base64與file_blob的相互轉(zhuǎn)換,感興趣的可以了解一下

在開發(fā)中,經(jīng)常會(huì)遇到需要將base64編碼的圖片轉(zhuǎn)換為file文件格式用于上傳的情況;圖片base64編碼轉(zhuǎn)換為file格式過程中,思路:base64 --> Uint8Array --> new File()。

具體實(shí)現(xiàn)方法如下,封裝在文件xxx.js中,放置于項(xiàng)目文件夾utils下,開發(fā)中直接引入調(diào)用即可:

/**
 * Base64 轉(zhuǎn) File
 * @param base64 String base64格式字符串
 * @param filename String 文件名稱或者文件路徑
 * @param contentType String file對(duì)象的文件類型,如:"image/png"
 */
 export function base64ToFile(base64, filename, contentType){
     var arr = base64.split(',')  //去掉base64格式圖片的頭部
     var bstr = atob(arr[1])   //atob()方法將數(shù)據(jù)解碼
     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轉(zhuǎn)Blob
* @param base64 String base64格式字符串
* @param contentType String blob對(duì)象的文件類型,如:"image/png"
*/
function base64ToBlob(base64, contentType){
	var arr = base64.split(',')  //去掉base64格式圖片的頭部
	var bstr = atob(arr[1])   //atob()方法將數(shù)據(jù)解碼
	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 )  //創(chuàng)建URL,
	blobImg.name = new Date().getTime() + '.png'
	return blobImg
}

/**
 * File 轉(zhuǎn) Base64
 * @param file Object 文件對(duì)象流
 */
 export function fileToBase64(file){
	return new Promise((resolve) => {
		var reader = new FileReader()
		reader.readAsDataURL(file)  
		//讀取后,result屬性中將包含一個(gè)data:URL格式的Base64字符串用來表示所讀取的文件
		reader.onload = function(e){
			resolve(e.target.result)
		}
     })
 }

/**
* Blob 轉(zhuǎn) Base64
* @param blob Object blob對(duì)象
*/
export function blobToBase64(blob){
	return new Promise((resolve) => {
		var reader = new FileReader()
		reader.readAsDataURL(blob)  
		//讀取后,result屬性中將包含一個(gè)data:URL格式的Base64字符串用來表示所讀取的文件
		reader.onload = function(e){
			resolve(e.target.result)
		}
     })
}

使用:引入xxx.js文件,調(diào)用方法

// 注意引入路徑不要出錯(cuò)
import { base64ToFile, base64ToBlob, fileToBase64, blobToBase64 } from '@/utils/xxx.js'

const file = base64ToFile(base64, 'picture', 'image/png')
// 輸出File對(duì)象
console.log(file)

const blob = base64ToBlob(base64, 'image/png')
// 輸出blob對(duì)象
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)
})

到此這篇關(guān)于JS 圖片base64與file_blob的相互轉(zhuǎn)換的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JS 圖片base64與file_blob轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法

    js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法

    這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法,涉及html5文字效果的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示

    javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示

    這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)智能手環(huán)時(shí)間顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 總結(jié)Javascript中數(shù)組各種去重的方法

    總結(jié)Javascript中數(shù)組各種去重的方法

    相信大家都知道網(wǎng)上關(guān)于Javascript中數(shù)組去重的方法很多,這篇文章給大家總結(jié)Javascript中數(shù)組各種去重的方法,相信本文對(duì)大家學(xué)習(xí)和使用Javascript具有一定的參考借鑒價(jià)值,有需要的下面來一起看看。
    2016-10-10
  • JS中通過slice()&substring()截取字符串前幾位的方法

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

    在Javascript使用字符串中,我們不一定需要全部的字符串,這時(shí)就需要截取字符串,本文主要介紹js中截取字符串前幾位的兩種方法:1、使用slice() 方法;2、使用substring() 方法,本文通過示例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-12-12
  • TypeScript接口和類型的區(qū)別小結(jié)

    TypeScript接口和類型的區(qū)別小結(jié)

    在 TypeScript 中,有兩種主要的定義自定義類型的方式,接口和類型,盡管它們?cè)谕庥^上可能相似,但它們之間有一些關(guān)鍵的區(qū)別,本文就詳細(xì)的介紹一下,感興趣的可以了解下
    2023-05-05
  • 原生JS實(shí)現(xiàn)圖片跑馬燈特效

    原生JS實(shí)現(xiàn)圖片跑馬燈特效

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)圖片跑馬燈特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • layui 富文本圖片上傳接口與普通按鈕 文件上傳接口的例子

    layui 富文本圖片上傳接口與普通按鈕 文件上傳接口的例子

    今天小編就為大家分享一篇layui 富文本圖片上傳接口與普通按鈕 文件上傳接口的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • TypeScript聲明合并的實(shí)現(xiàn)

    TypeScript聲明合并的實(shí)現(xiàn)

    本文主要介紹了TypeScript聲明合并的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • javascript中閉包概念與用法深入理解

    javascript中閉包概念與用法深入理解

    這篇文章主要介紹了javascript中閉包概念與用法,結(jié)合實(shí)例形式深入分析了javascript中閉包的概念、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法

    layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法

    今天小編就為大家分享一篇layui文件上傳控件帶更改后數(shù)據(jù)傳值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評(píng)論