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

將html字符串中的base64圖片轉(zhuǎn)換成file并上傳

這篇具有很好參考價值的文章主要介紹了將html字符串中的base64圖片轉(zhuǎn)換成file并上傳。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目的
  • 解決富文本編輯器中復(fù)制粘貼的圖片 base64 字符串過長導(dǎo)致無法存儲到數(shù)據(jù)庫的問題
思路
  • 通過正則 獲取html字符串中里面的所有圖片 base64 數(shù)組 然后每個圖片base64 轉(zhuǎn)成file
  • 使用上傳文件的函數(shù) 上傳到服務(wù)器上.
  • 將上傳后獲取到的圖片訪問url 替換成 數(shù)據(jù)里面的 img 的 src.
代碼
/**
 * 將html中的 圖片base64 通過調(diào)上傳文件接口轉(zhuǎn)換成圖片url
 * */

/**
上傳文件
**/
export function uploadFile(params) {
	let url = `/upload`; // 
	const formData = new FormData();
	for (let item in params) {
		formData.append(item, params[item]);
	}
	return fetch(url, {
		method: 'POST',
		headers: {
			Accept: '*/*',
		},
		body: formData,
	})
		.then((res) => {
			return res.json();
		})
		.then((responseData) => {
			if(responseData && typeof responseData === 'object' && responseData.url){
				return responseData;
			}
			if (responseData && responseData.data) {
				return responseData.data;
			} else {
				throw new Error('文件上傳失敗');
			}
		})
		.catch(() => {
			throw new Error('上傳文件失敗');
		});
}

// base64轉(zhuǎn)url
export default function base64ImgToUrl(htmlContent = ''){
	return new Promise((resolve, reject) => {
		let splitContent = getImages(htmlContent);  // 獲取所有的圖片 的 base64 src
		let res = [];
		for(let item of splitContent){
			if(item && item.includes(';base64,')){
				const file = {
					base64: item,
				};
				file.file = base64toFile(item, new Date().getTime()); // 將圖片轉(zhuǎn)換成file
				res.push(file);
			}
		} // 任務(wù)列表

		async function DoTaskByForOf() {
			for (let item of res) { // 按順序執(zhí)行
					const fileResponse = await uploadFile({file:item.file}); // 上傳文件到服務(wù)器
					if(fileResponse && fileResponse.url){
						item.url = fileResponse.url;
					}
			}
			return res;
		}
		DoTaskByForOf().then((r) => {
			resolve(r);
		}); // 按順序執(zhí)行
	})
}

/**
 * 使用正則表達(dá)式從HTML字符串中獲取所有圖像src
 * */
export function getImages(html) {
	const regExp = /<img[^>]+src=['"]([^'"]+)['"]+/g;
	const result = [];
	let temp;
	while ((temp = regExp.exec(html)) != null) {
		result.push(temp[1]);
	}
	return result;
}


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

文章來源地址http://www.zghlxwxcb.cn/news/detail-817856.html

到了這里,關(guān)于將html字符串中的base64圖片轉(zhuǎn)換成file并上傳的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • postman獲取驗證碼圖片(base64字符串格式)

    postman獲取驗證碼圖片(base64字符串格式)

    在 Tests 里編寫腳本 然后,在響應(yīng)體的 Visualize 里查看

    2024年02月12日
    瀏覽(24)
  • 圖片文件和 Base64 字符串互轉(zhuǎn)(Java 實現(xiàn))

    ??項目中,有些場景下,客戶端需要將本地圖片傳輸?shù)椒?wù)方存儲,此時客戶端可以將圖片文件轉(zhuǎn)為 Base64 字符串傳輸?shù)椒?wù)方,服務(wù)方收到后再將 Base64 字符串還原為圖片。以下是一些圖片文件和 Base64 字符串互轉(zhuǎn)的工具類,以及校驗圖片大小的工具。 一、依賴包 二、工

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

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

    2024年02月11日
    瀏覽(24)
  • PDF處理控件Aspose.PDF功能演示:使用Java將Base64字符串轉(zhuǎn)換為PDF/JPG/PNG圖像

    PDF處理控件Aspose.PDF功能演示:使用Java將Base64字符串轉(zhuǎn)換為PDF/JPG/PNG圖像

    Aspose.PDF ?是一款高級PDF處理API,可以在跨平臺應(yīng)用程序中輕松生成,修改,轉(zhuǎn)換,呈現(xiàn),保護(hù)和打印文檔。無需使用Adobe Acrobat。此外,API提供壓縮選項,表創(chuàng)建和處理,圖形和圖像功能,廣泛的超鏈接功能,圖章和水印任務(wù),擴(kuò)展的安全控件和自定義字體處理。 Aspose API支持

    2024年02月04日
    瀏覽(44)
  • Java Base64字符串與String字符串互轉(zhuǎn)方法

    Java Base64字符串與String字符串互轉(zhuǎn)方法

    在使用String轉(zhuǎn)Base64和Base64轉(zhuǎn)String上有點小問題,特此記錄。 結(jié)果: 也是跟上面差不多的思路,將Base64轉(zhuǎn)為byte數(shù)組,再轉(zhuǎn)為String

    2024年02月15日
    瀏覽(32)
  • [譯]JavaScript中Base64編碼字符串的細(xì)節(jié)

    [譯]JavaScript中Base64編碼字符串的細(xì)節(jié)

    本文作者為 360 奇舞團(tuán)前端開發(fā)工程師 本文為翻譯 原文標(biāo)題:The nuances of base64 encoding strings in JavaScript 原文作者:Matt Joseph 原文鏈接:https://web.dev/articles/base64-encoding ? Base64編碼和解碼是一種常見的將二進(jìn)制內(nèi)容轉(zhuǎn)換為適合Web的文本的形式。它通常用于data URLs,比如內(nèi)嵌圖片

    2024年02月05日
    瀏覽(28)
  • 解決因base64字符串過長,報500的問題

    解決因base64字符串過長,報500的問題

    提示:后端用nodejs的express,前端是vue 當(dāng)上傳的圖片小(base64字符串長度?。r,上傳成功 當(dāng)上傳的圖片大(base64字符串長度過長)時,上傳失敗,接口報500,服務(wù)器也報了一大堆的錯誤。 如果直接把base64字符串復(fù)制到數(shù)據(jù)庫發(fā)現(xiàn)報錯,提示數(shù)據(jù)太長,很明顯是因為base64字符

    2024年02月11日
    瀏覽(28)
  • 在HTTP請求中安全傳輸base64編碼的字符串

    base64 是一種常見的的編碼格式,它可以把二進(jìn)制數(shù)據(jù)編碼成一個由大小寫英文字母( a-zA-Z )、阿拉伯?dāng)?shù)字( 0-9 ),以及三個特殊字符 + 、 / 、 = 組成的字符串。 但是在URL傳輸中, + 、 / 、 = 這三個特殊字符是保留字符(或者叫不安全字符),如果將編碼后的base64字符串直

    2024年02月06日
    瀏覽(46)
  • [虛幻引擎] UE DTBase64 插件說明 使用藍(lán)圖對字符串或文件進(jìn)行Base64加密解密

    [虛幻引擎] UE DTBase64 插件說明 使用藍(lán)圖對字符串或文件進(jìn)行Base64加密解密

    本插件可以在虛幻引擎中使用藍(lán)圖對字符串,字節(jié)數(shù)組,文件進(jìn)行Base64的加密和解密。 目錄 1. 節(jié)點說明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下載 String To Base64 對字符串進(jìn)行Base64加密,字符串會自動轉(zhuǎn)換成UTF8的格式,這

    2024年02月13日
    瀏覽(100)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包