国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uniapp圖片轉(zhuǎn)base64及JS各文件類(lèi)型相互轉(zhuǎn)換

這篇具有很好參考價(jià)值的文章主要介紹了uniapp圖片轉(zhuǎn)base64及JS各文件類(lèi)型相互轉(zhuǎn)換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、chooseImage + request + arrayBufferToBase64

App H5 微信小程序 快手小程序 京東小程序

功能限制主要在arrayBufferToBase64
uniapp圖片轉(zhuǎn)base64及JS各文件類(lèi)型相互轉(zhuǎn)換

getImg() {
	uni.chooseImage({
		success: async (res) => {
			// 等待全部完成后再接收結(jié)果
			let base64List = await Promise.all(res.tempFiles.map((item, index) => {
				return this.tempToBase64(item)
			}))
		}
	})
},
tempToBase64(tempFiles) {
	return new Promise((resolve, reject) => {
		wx.request({
			url: tempFiles.path,
			responseType: 'arraybuffer',
			success: (res) => {
				
				// 避免獲取不到文件類(lèi)型
				if (!tempFiles.type) {
					uni.getImageInfo({
						src: tempFiles.path,
						success: (image) => {
							// 把a(bǔ)rraybuffer轉(zhuǎn)成base64并拼接
							resolve(`data:image/${image.type};base64,${uni.arrayBufferToBase64(res.data)}`)
						},
						fail: (err) => {
							reject(err)
						}
					});
				}
				// //把a(bǔ)rraybuffer轉(zhuǎn)成base64并拼接
				else resolve(`data:${tempFiles.type};base64,${uni.arrayBufferToBase64(res.data)}`)
			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

2、chooseImage + getFileSystemManager

微信小程序 字節(jié)跳動(dòng)小程序 QQ小程序

功能限制主要在getFileSystemManager
uniapp圖片轉(zhuǎn)base64及JS各文件類(lèi)型相互轉(zhuǎn)換

getImg() {
	uni.chooseImage({
		success: async (res) => {
			let base64List = await Promise.all(res.tempFiles.map((item, index) => {
				return this.tempToBase64(item)
			}))
			console.log(base64List)
		}
	})
},
tempToBase64(tempFiles) {
	return new Promise((resolve, reject) => {
		uni.getFileSystemManager().readFile({
			filePath: tempFiles.path,
			encoding: 'base64',
			success: (res) => {
				// 避免獲取不到文件類(lèi)型
				if (!tempFiles.type) {
					uni.getImageInfo({
						src: tempFiles.path,
						success: (image) => {
							// 拼接成完整的base64
							resolve(`data:image/${image.type};base64,${res.data}`)
						},
						fail: (err) => {
							reject(err)
						}
					});
				} 
				// 拼接成完整的base64
				else resolve(`data:${tempFiles.type};base64,${res.data}`)

			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

3、chooseImage + FileReader

H5

功能限制主要在FileReader實(shí)例上

getImg() {
	uni.chooseImage({
		success: async (res) => {
			// 等待全部完成后再接收結(jié)果
			let base64List = await Promise.all(res.tempFiles.map((item, index) => {
				return this.tempToBase64(item)
			}))
		}
	})
},
tempToBase64(tempFiles) {
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		const reader = new FileReader();
		reader.readAsDataURL(tempFiles);
		reader.onload = () => resolve(reader.result);
		reader.onerror = (error) => reject(error);
	});
}

4、擴(kuò)展-JS各文件類(lèi)型相互轉(zhuǎn)換

在 JavaScript 中的經(jīng)常用到的二進(jìn)制的格式有三種:

  • ArrayBuffer:用來(lái)表示通用的、固定長(zhǎng)度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū);
  • Blob:表示一個(gè)不可變、原始數(shù)據(jù)的類(lèi)文件對(duì)象。它的數(shù)據(jù)可以按文本或二進(jìn)制的格式進(jìn)行讀取,也可以轉(zhuǎn)換成 ReadableStream 來(lái)用于數(shù)據(jù)操作;
  • File:特殊類(lèi)型的 Blob,且可以用在任意的 Blob 類(lèi)型的 context 中。

原生js中文件處理通常使用FileReader。

  • FileReader對(duì)象允許 Web 應(yīng)用程序異步讀取存儲(chǔ)在用戶(hù)計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容。

base64轉(zhuǎn)換中通常會(huì)用到atob/btoa

  • atob對(duì)經(jīng)過(guò) base-64 編碼的字符串進(jìn)行解碼。
  • btoa可以將一個(gè)二進(jìn)制字符串編碼為 Base64 編碼的 ASCII 字符串。

4.1 File 轉(zhuǎn)成 ArrayBuffer

function fileToArrayBuffer(file){
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		let reader = new FileReader();
		reader.readAsArrayBuffer(file);
		reader.onload = () => resolve(reader.result);
		reader.onerror = (error) => reject(error);
	});
}

4.2 File 轉(zhuǎn)成 blob

File特殊類(lèi)型的 Blob,通常不需要轉(zhuǎn)換,需要轉(zhuǎn)換時(shí)可以利用 FileReader 中轉(zhuǎn)。

function fileToBlob(file) {
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		let reader = new FileReader();
		reader.readAsArrayBuffer(file);
		reader.onload = () => resolve(new Blob([reader.result]));
		reader.onerror = (error) => reject(error);
	});
}

4.3 File 轉(zhuǎn)成 base64

function fileToBase64(file) {
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		const reader = new FileReader();
		reader.readAsDataURL(file);
		reader.onload = () => resolve(reader.result);
		reader.onerror = (error) => reject(error);
	});
}

4.4 ArrayBuffer 轉(zhuǎn)成 blob

function arrayBufferToBlob(arraybuffer) {
	return new Blob([arraybuffer]);
}

4.5 ArrayBuffer 轉(zhuǎn)成 File

function arrayBufferToBlob(arraybuffer, filename = 'tempArrayBuffer') {
	new File([arraybuffer], filename )
}

4.6 Blob 轉(zhuǎn)成 ArrayBuffer

function blobToArrayBuffer(blob) {
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		let reader = new FileReader();
		reader.readAsArrayBuffer(blob);
		reader.onload = () => resolve(reader.result);
		reader.onerror = (error) => reject(error);
	});
}

4.7 Blob 轉(zhuǎn)成 File

File特殊類(lèi)型的 Blob,通常不需要轉(zhuǎn)換,需要轉(zhuǎn)換時(shí)可以利用 FileReader 中轉(zhuǎn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482750.html

function blobToFile(blob, filename = 'tempBlob') {
	return new Promise((resolve, reject) => {
		///專(zhuān)門(mén)用來(lái)讀文件的工具類(lèi)
		let reader = new FileReader();
		reader.readAsArrayBuffer(blob);
		reader.onload = () => resolve(new File([reader.result], filename ))
		reader.onerror = (error) => reject(error);
	});
}

4.8 base64 轉(zhuǎn)成 Blob

function base64toBlob(base64) {
	let arr = base64.split(',');
	let bstr = atob(arr[1]);
	let n = bstr.length;;
	let u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	return new Blob([u8arr], {
		type: arr[0].match(/:(.*?);/)[1]
	});
},

4.9 base64 轉(zhuǎn)成 File

function base64toFile(base64, filename = 'file') {
	let mime = arr[0].match(/:(.*?);/)[1];
	// suffix是該文件的后綴
	let suffix = mime.split('/')[1];
	// atob 對(duì)經(jīng)過(guò) base-64 編碼的字符串進(jìn)行解碼
	let bstr = atob(base64.split(',')[1]);
	// n 是解碼后的長(zhǎng)度
	let n = bstr.length;
	// Uint8Array 數(shù)組類(lèi)型表示一個(gè) 8 位無(wú)符號(hào)整型數(shù)組 初始值都是 數(shù)子0
	let u8arr = new Uint8Array(n);
	// charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個(gè)返回值是 0 - 65535 之間的整數(shù)
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	// new File返回File對(duì)象 第一個(gè)參數(shù)是 ArraryBuffer 或 Bolb 或Arrary 第二個(gè)參數(shù)是文件名
	// 第三個(gè)參數(shù)是 要放到文件中的內(nèi)容的 MIME 類(lèi)型
	return new File([u8arr], `${filename}.${suffix}`, {
		type: mime,
	});
},

4.10 base64 轉(zhuǎn)成 ArrayBuffer

function base64ToArrayBuffer(base64){
   let text = new TextEncoder()
   return text.encode(btoa(base64))
} 

到了這里,關(guān)于uniapp圖片轉(zhuǎn)base64及JS各文件類(lèi)型相互轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • js實(shí)現(xiàn)base64,url,blob之間的相互轉(zhuǎn)換

    js實(shí)現(xiàn)base64,url,blob之間的相互轉(zhuǎn)換

    一般來(lái)說(shuō)前端展示圖片會(huì)通過(guò)三種方式: url、base64、blob 1.url: 一般來(lái)說(shuō),圖片的顯示還是建議使用url的方式比較好。 2.base64: 如果圖片較大,圖片的色彩層次比較豐富,則不適合使用這種方式,因?yàn)槠銪ase64編碼后的字符串非常大,會(huì)明顯增大HTML頁(yè)面,影響加載速度。如果圖

    2023年04月27日
    瀏覽(27)
  • 微信小程序uni-app圖片和base64相互轉(zhuǎn)換

    以上代碼僅供參考,具體實(shí)現(xiàn)細(xì)節(jié)和樣式可以根據(jù)需求自行調(diào)整。 需要完整源碼的朋友,希望你能點(diǎn)贊+收藏+評(píng)論,然后私信我即可~ 如果教程中有不懂的地方,可添加學(xué)習(xí)會(huì)員小助手咨詢(xún)(微信:mifankeji77)

    2024年02月14日
    瀏覽(87)
  • js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    Blob對(duì)象表示一個(gè)不可變、原始數(shù)據(jù)的類(lèi)文件對(duì)象,Blob表示的不一定是JavaScript原生格式的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式 url 轉(zhuǎn) base64 Blob 轉(zhuǎn) url Blob 轉(zhuǎn) base64 base64 轉(zhuǎn)Blob base64 轉(zhuǎn) url 一般來(lái)說(shuō)前端展示圖片會(huì)通過(guò)三種方式:

    2024年02月03日
    瀏覽(30)
  • 【js】js前端技巧之圖片格式轉(zhuǎn)換(File、Blob、base64):

    【js】js前端技巧之圖片格式轉(zhuǎn)換(File、Blob、base64):

    一、類(lèi)型簡(jiǎn)介 BLOB(binary large object) : 二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。 在計(jì)算機(jī)中,BLOB常常是數(shù)據(jù)庫(kù)中用來(lái)存儲(chǔ)二進(jìn)制文件的字段類(lèi)型。 屬性名稱(chēng) 讀/寫(xiě) 描述 size 只讀 Blob 對(duì)象中所包含數(shù)據(jù)的大?。ㄗ止?jié))。 type 只讀 一個(gè)字符串,表明該Blob對(duì)象所包含數(shù)據(jù)

    2024年02月07日
    瀏覽(30)
  • 前端將base64圖片轉(zhuǎn)換成file文件

    前端將base64圖片轉(zhuǎn)換成file文件

    1、base64轉(zhuǎn)成file具體代碼 文件轉(zhuǎn)換過(guò)程: 2、代碼解析 ? 該方法涉及知識(shí)點(diǎn)較多,首先因?yàn)閎ase64的前綴信息部分與文件內(nèi)容部分是通過(guò) , 進(jìn)行連接的, data:image/***;base64(前綴信息),xxxxx(文件內(nèi)容) ,所以利用 split() 方法對(duì)base64進(jìn)行分割,將前綴文件信息,與文件內(nèi)容分隔開(kāi)。得

    2024年01月20日
    瀏覽(27)
  • blob 和 base64 相互轉(zhuǎn)換

    1. 方法 2. 使用方法 1. 方法 2. 使用方法

    2024年02月19日
    瀏覽(21)
  • js - 圖片base64轉(zhuǎn)file文件的兩種方式

    js - 圖片base64轉(zhuǎn)file文件的兩種方式

    最近項(xiàng)目中需要實(shí)現(xiàn)把圖片的base64編碼轉(zhuǎn)成file文件的功能,然后再上傳至服務(wù)器。 1.通過(guò)new File()將base64轉(zhuǎn)換成file文件,此方式需考慮瀏覽器兼容問(wèn)題 2.先將base64轉(zhuǎn)換成blob,再將blob轉(zhuǎn)換成file文件,此方法不存在瀏覽器不兼容問(wèn)題 vue中配合vant的uploader上傳組件使用案例: 打

    2024年02月14日
    瀏覽(32)
  • uniapp 將base64字符串保存為圖片、Word、Excel、音頻、視頻等文件

    ?uniapp 將base64字符串保存為圖片、Word、Excel、音頻、視頻等文件 index.vue,復(fù)制運(yùn)行此代碼看效果,支持Android、iOS 參考文檔: 1、uniapp中拿到base64轉(zhuǎn)blob對(duì)象,或base64轉(zhuǎn)bytes字節(jié)數(shù)組,io操作寫(xiě)入字節(jié)流文件bytes 2、錄音文件與Base64編碼相互轉(zhuǎn)換的方法 3、關(guān)于base64保存為文件 4、

    2024年02月11日
    瀏覽(24)
  • uni-app 支持 app端, h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64

    uni-app 支持 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64,下方是插件市場(chǎng)的地址 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64 - DCloud 插件市場(chǎng) https://ext.dcloud.net.cn/plugin?id=13926

    2024年02月13日
    瀏覽(92)
  • JS前端讀取本地上傳的File文件對(duì)象內(nèi)容(包括Base64、text、JSON、Blob、ArrayBuffer等類(lèi)型文件)

    FileReader.readAsArrayBuffer() - Web API 接口參考 | MDN FileReader 接口提供的 readAsArrayBuffer() 方法用于啟動(dòng)讀取指定的 Blob 或 File 內(nèi)容。當(dāng)讀取操作完成時(shí),readyState 變成 DONE(已完成),并觸發(fā) loadend 事件,同時(shí) result 屬性中將包含一個(gè) ArrayBuffer 對(duì)象以表示所讀取文件的數(shù)據(jù)。 https://

    2024年02月15日
    瀏覽(60)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包