最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

/**
 * Base64 轉(zhuǎn) 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()方法將數(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對象的文件類型,如:"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 文件對象流
 */
 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 轉(zhuǎn) 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文件,調(diào)用方法

// 注意引入路徑不要出錯
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)
})

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

相關(guān)文章

  • 小程序ios音頻播放沒聲音問題的解決

    小程序ios音頻播放沒聲音問題的解決

    這篇文章主要介紹了小程序ios音頻播放沒聲音問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 文本框只能輸入數(shù)字的實現(xiàn)方法(兼容IE火狐)

    文本框只能輸入數(shù)字的實現(xiàn)方法(兼容IE火狐)

    下面小編就為大家?guī)硪黄谋究蛑荒茌斎霐?shù)字的實現(xiàn)方法(兼容IE火狐)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • JavaScript狀態(tài)模式及適配器模式使用講解

    JavaScript狀態(tài)模式及適配器模式使用講解

    這篇文章主要介紹了理解JavaScript中的狀態(tài)模式及適配器模式,適配器模式即Adapter Pattern,是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-12-12
  • javascript中AJAX用法實例分析

    javascript中AJAX用法實例分析

    這篇文章主要介紹了javascript中AJAX用法,實例分析了針對不同瀏覽器的Ajax使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • js添加元素的簡單方式示例

    js添加元素的簡單方式示例

    這篇文章主要給大家介紹了關(guān)于js添加元素的簡單方式,文中通過代碼示例將每種實現(xiàn)的方法都介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用js具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • JavaScript中style.left與offsetLeft的使用及區(qū)別詳解

    JavaScript中style.left與offsetLeft的使用及區(qū)別詳解

    這篇文章主要介紹了JavaScript中style.left與offsetLeft的使用及區(qū)別詳解的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • JavaScript實現(xiàn)氣球打字的小游戲

    JavaScript實現(xiàn)氣球打字的小游戲

    這篇文章主要介紹了JavaScript實現(xiàn)氣球打字的小游戲,下面文章的思路來源于打字游戲,具體實現(xiàn)過程,需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-04-04
  • JavaScript中Array.map()的使用與技巧分享(附實際應(yīng)用代碼)

    JavaScript中Array.map()的使用與技巧分享(附實際應(yīng)用代碼)

    Array.map()適合需要返回新數(shù)組、進(jìn)行鏈?zhǔn)秸{(diào)用或不修改原數(shù)組的場景,它與forEach()的區(qū)別在于有返回值,基本語法中,callback函數(shù)處理每個元素并返回新值,本文介紹了JavaScript中Array.map()的使用與技巧分享(附實際應(yīng)用代碼),需要的朋友可以參考下
    2025-02-02
  • JavaScript的模塊化:封裝(閉包),繼承(原型) 介紹

    JavaScript的模塊化:封裝(閉包),繼承(原型) 介紹

    在復(fù)雜的邏輯下, JavaScript 需要被模塊化,模塊需要封裝起來,只留下供外界調(diào)用的接口。閉包是 JavaScript 中實現(xiàn)模塊封裝的關(guān)鍵,也是很多初學(xué)者難以理解的要點
    2013-07-07
  • js深度合并兩個數(shù)組對象的實現(xiàn)

    js深度合并兩個數(shù)組對象的實現(xiàn)

    這篇文章主要介紹了js深度合并兩個數(shù)組對象的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

皮山县| 慈溪市| 扬州市| 峨山| 封丘县| 柳州市| 乐至县| 蒲江县| 汪清县| 抚州市| 九龙城区| 夏河县| 林周县| 丰县| 洛川县| 洪泽县| 高雄县| 五莲县| 宁都县| 安宁市| 巍山| 阿瓦提县| 莲花县| 龙海市| 北宁市| 通江县| 夹江县| 河池市| 新营市| 集贤县| 台北县| 石城县| 白银市| 金秀| 苏尼特右旗| 中山市| 福海县| 青川县| 达日县| 南部县| 安丘市|