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

Base64轉二進制文件流以及轉File、圖片轉Base64、二進制流轉Base64

這篇具有很好參考價值的文章主要介紹了Base64轉二進制文件流以及轉File、圖片轉Base64、二進制流轉Base64。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、Base64轉二進制文件流

方法一:

/**
 * Base64字符串轉二進制流
 * @param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;base64, )
 */
function dataURLtoBlob(dataurl) {
	var arr = dataurl.split(","),
		mime = arr[0].match(/:(.*?);/)[1],
		bstr = atob(arr[1]),
		n = bstr.length,
		u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	return new Blob([u8arr], {
		type: mime,
	});
}

調用示例:

let dataurl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let blob = dataURLtoBlob(dataurl);

方法二:

/**
 * Base64字符串轉二進制流
 * @param {String} base64 Base64字符串(字符串不包含Data URI scheme)
 * @param {String} type 文件類型(例如:image/png)
 */
function base64toBlob(base64, type) {
	// 將base64轉為Unicode規(guī)則編碼
	let bstr = atob(base64),
		n = bstr.length,
		u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n); // 轉換編碼后才可以使用charCodeAt 找到Unicode編碼
	}
	return new Blob([u8arr], {
		type,
	})
}

調用示例:

let dataurl = 'iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let blob = base64toBlob(dataurl, 'image/png');

?2、Base64轉File

方法一:

/**
 * Base64字符串轉File文件
 * @param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;base64, )
 * @param {String} filename 文件名稱
 */
function dataURLtoFile(dataurl, filename) {
	let arr = dataurl.split(',');
	let mime = arr[0].match(/:(.*?);/)[1];
	let bstr = atob(arr[1]);
	let n = bstr.length;
	let u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	return new File([u8arr], filename, {
		type: mime
	});
}

調用示例:

let dataurl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let file = dataURLtoFile(dataurl, '文件名稱');

方法二:

/**
 * Base64字符串轉File文件
 * @param {String} base64 Base64字符串(字符串不包含Data URI scheme)
 * @param {String} filename 文件名稱
 * @param {String} type 文件類型(例如:image/png)
 */
function base64toFile(base64, filename, type) {
	// 將base64轉為Unicode規(guī)則編碼
	let bstr = atob(base64);
	let n = bstr.length;
	let u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n); // 轉換編碼后才可以使用charCodeAt 找到Unicode編碼
	}
	return new File([u8arr], filename, {
		type: type
	});
}

調用示例:

let dataurl = 'iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let file = base64toFile(dataurl, '文件名稱', 'image/png');

補充:

3、圖片轉Base64

/**
 * 圖片轉換為base64
 * @param {Object} img 圖片對象
 */
function getBase64Image(img) {
	var canvas = document.createElement("canvas");
	canvas.width = img.width;
	canvas.height = img.height;
	var ctx = canvas.getContext("2d");
	ctx.drawImage(img, 0, 0, img.width, img.height);
	var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
	var dataURL = canvas.toDataURL("image/" + ext);
	return dataURL;
}

調用示例:

let img = new Image();
img.setAttribute('crossOrigin', 'anonymous');
// 圖片地址
img.src = 'https://img2.baidu.com/it/u=1987571340,2982374133&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=500';
img.onload = () => {
	// 獲得Base64
	let base64Str = getBase64Image(img);
	console.log(base64Str)
}

4、二進制流轉Base64

方法一:

/**
 * 二進制流轉Base64(字符串包含Data URI scheme)
 * @param {Object} data 二進制流
 * @param {String} type 文件類型(例如:image/png)
 */
function getDataURL(data, type) {
	return new Promise((resolve, reject) => {
		const blob = new Blob([data], {
			type
		});
		const reader = new FileReader();
		reader.readAsDataURL(blob);
		reader.onload = () => resolve(reader.result);
		reader.onerror = (error) => reject(error);
	});
}

調用示例:

/**
 * Base64轉二進制流
 * @param {String} dataurl Base64字符串(字符串包含Data URI scheme,例如:data:image/png;base64, )
 */
function getBlob(dataurl) {
	var arr = dataurl.split(","),
		mime = arr[0].match(/:(.*?);/)[1],
		bstr = atob(arr[1]),
		n = bstr.length,
		u8arr = new Uint8Array(n);
	while (n--) {
		u8arr[n] = bstr.charCodeAt(n);
	}
	return {
		data: u8arr,
		type: mime
	};
}
// 獲得二進制流(就不調接口了,先用Base64轉成二進制流進行測試)
let dataurl =
	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let blob = getBlob(dataurl);
// 二進制流轉Base64
getDataURL(blob.data, blob.type).then((base64) => {
	console.log(base64);
});

方法二:

/**
 * 二進制流轉Base64(字符串不包含Data URI scheme)
 * @param {Object} data 二進制流
 */
function getBase64(data) {
	let base64 = btoa(new Uint8Array(data).reduce((data, byte) => data + String.fromCharCode(byte), ''));
	return base64;
}

調用示例:

// 獲得二進制流(就不調接口了,先用Base64轉成二進制流進行測試)
let dataurl =
	'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC';
let blob = getBlob(dataurl);
// 二進制流轉Base64
let base64 = getBase64(blob.data);
console.log(base64);

5、補充

5.1?atob()

atob()?對經過 base-64 編碼的字符串進行解碼。你可以使用?window.btoa()?方法來編碼一個可能在傳輸過程中出現問題的數據,并且在接受數據之后,使用 atob() 方法再將數據解碼。例如:你可以編碼、傳輸和解碼操作各種字符,比如 0-31 的 ASCII 碼值。?

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

let encodedData = window.btoa("Hello, world"); // 編碼

5.2?btoa()

btoa()?方法可以將一個二進制字符串(例如,將字符串中的每一個字節(jié)都視為一個二進制數據字節(jié))編碼為?Base64?編碼的 ASCII 字符串。

你可以使用這個方法來對可能遇到通信問題的數據進行編碼,然后使用?atob()?方法來對數據進行解碼。例如,你可以對 ASCII 中的控制字符(值為 0 到 31 的字符)進行編碼。

使用:

const encodedData = btoa('Hello, world'); // 編碼字符串
const decodedData = atob(encodedData); // 解碼字符串

5.3?charCodeAt()

charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼,返回值是 0 - 65535 之間的整數,表示給定索引處的 UTF-16 代碼單元。

字符串中第一個字符的位置為 0, 第二個字符位置為 1,以此類推。

使用:

var str = "Hello, world";
var code = str.charCodeAt(0);

5.4?fromCharCode()

fromCharCode() 可接受一個指定的 Unicode 值,然后返回一個字符串。

注意:該方法是 String 的靜態(tài)方法,字符串中的每個字符都由單獨的 Unicode 數字編碼指定。使用語法: String.fromCharCode()。

使用:

var str = "Hello, world";
var code = str.charCodeAt(0);
var result = String.fromCharCode(code);

到了這里,關于Base64轉二進制文件流以及轉File、圖片轉Base64、二進制流轉Base64的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • java圖片轉二進制流_java將文件轉化成二進制流

    二進制流的主要編碼格式是base64碼??梢栽诰W上找一些在線轉base64編碼的網站進行嘗試轉換。 例如:http://imgbase64.duoshitong.com/然后通過前端展現和下載。 前端顯示二進制流圖片(src中放置base64碼及二進制流) 前端下載二進制流文件(herf中放置base64碼及二進制流,download后面放

    2024年02月06日
    瀏覽(35)
  • flask.send_file實現文件下載、文件傳輸和二進制流傳輸

    flask.send_file實現文件下載、文件傳輸和二進制流傳輸

    在使用flask框架時,我們有時需要向前端傳輸文件。或者需要用戶訪問一個url時直接下載文件。這時可以使用flask.send_file()函數來實現相關的操作。 path_or_file:需要發(fā)送的文件路徑或者二進制文件對象 mimetype:文件的MIME類型,如果沒有設置,會嘗試根據文件名進行檢測 as_at

    2024年02月12日
    瀏覽(157)
  • 微信小程序接收二進制流文件(圖片預覽,文件打開)

    ?下面通過downloadOaFile接口獲取到二進制流,即res.data 注意?。?!直接用downloadOaFile獲取的二進制流文件在寫入時會導致文件損壞,必須在uni.request對象的屬性中加上 如果不加,默認是 這一點非常重要,踩了好久的坑,而且這兩點的區(qū)別在network的response中還看不出來,因為兩者

    2024年02月16日
    瀏覽(106)
  • Vue 讀取后臺二進制文件流轉為圖片顯示

    Vue 讀取后臺二進制文件流轉為圖片顯示

    Vue 讀取后臺二進制文件流轉為圖片顯示 后臺返回格式 axios寫法 重點 responseType: ‘blob’ , 使用的是res中的data blob 本文章參考 https://huaweicloud.csdn.net/63a56170b878a545459459f2.html

    2024年04月11日
    瀏覽(22)
  • Java 壓縮多個文件為zip包(中間不生成臨時文件,直接壓縮為zip二進制流),以及解壓zip包二進制流為文件

    Java 壓縮多個文件為zip包(中間不生成臨時文件,直接壓縮為zip二進制流),以及解壓zip包二進制流為文件

    這篇博客將提供倆種方法, 提前生成要壓縮的多個文件,然后讀取文件夾多層或一層去遍歷壓縮zip包 直接用原始文件名稱及二進制流,壓縮返回zip包二進制流,中間不生成冗余文件; 很明顯方法2更優(yōu)一些; 解壓zip文件或者zip文件流驗證; 壓縮倆個文件到zip包,并分別解析

    2024年02月06日
    瀏覽(22)
  • vue 后端返回二進制流-前端通過blob對象下載文件-圖片

    前言 在實際開發(fā)中我們經常會遇見下載文件的場景,比如下載合同,下載文件 下載文件有2種方式,一種是后端返回二進制流,前端通過blob對象接受根據不同類型下載 還有一種把地址直接在瀏覽器新窗口打開瀏覽器打開pdf可以預覽和下載,其他文件直接下載 但不管是那種方

    2024年02月05日
    瀏覽(26)
  • C++文件操作基礎 讀寫文本、二進制文件 輸入輸出流 文件位置指針以及隨機存取 文件緩沖區(qū)以及流狀態(tài)

    文本文件一般以行的形式組織數據。 包含頭文件: #include fstream 類: ofstream(output file stream) ofstream 打開文件的模式(方式):類內open()成員函數參數2.參數1是文件存儲/創(chuàng)建路徑 例如:fout.open(filename,ios::app); 對于 ofstream,不管用哪種模式打開文件,如果文件不存在,都會創(chuàng)

    2024年01月25日
    瀏覽(21)
  • vue3+axios:圖片鏈接轉換成二進制文件流后并提交服務器

    vue3+axios:圖片鏈接轉換成二進制文件流后并提交服務器

    1、使用Image類創(chuàng)建一個新的圖片。 2、將圖片轉換成base64。 3、將base64圖片使用File類轉換成二進制文件流 4、將二進制文件流使用 FormData類轉換成binary類型提交服務器。 Image類創(chuàng)建一個新的圖片 圖片轉換成base64 base64轉換成二進制文件流 二進制流文件提交到服務器

    2024年02月15日
    瀏覽(25)
  • 前端將base64圖片轉換成file文件

    前端將base64圖片轉換成file文件

    1、base64轉成file具體代碼 文件轉換過程: 2、代碼解析 ? 該方法涉及知識點較多,首先因為base64的前綴信息部分與文件內容部分是通過 , 進行連接的, data:image/***;base64(前綴信息),xxxxx(文件內容) ,所以利用 split() 方法對base64進行分割,將前綴文件信息,與文件內容分隔開。得

    2024年01月20日
    瀏覽(27)
  • 前端FileReader對象實現圖片file文件轉base64

    前端FileReader對象實現圖片file文件轉base64

    1、file轉base64具體代碼 2、原理解析 ? 上面封裝的方法,其原理主要是借助 FileReader 對象來實現圖片格式的轉換, FileReader 對象中的 readAsDataURL() 方法,可以讀取一個 File 或 Blob 類型的文件,并將其轉換為base64格式的字符串。但要注意的一點是:我們通過 readAsDataURL() 方法去讀

    2023年04月09日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包