base64转二进制流,file文件

news/2025/2/25 18:44:55

base64二进制流

img标签src属性,可以直接使用base64字符串,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,
	});
}

base64转file

img标签src属性,可以直接使用base64字符串,base64需要先解码,然后再转为文件

/**
 * 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
	});
}

文件转base64

let fileReader = new FileReader()
    file.onchange = function (e) {
        console.log(e.target.files); //可以查到对应上传的文件,file是继承blob的对象
        fileReader.readAsDataURL(e.target.files[0])//转base64
        fileReader.onload = function (res) { console.log(res.target.result); }//显示base64的字符串
    }

流转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);
	});
}

http://www.niftyadmin.cn/n/4937094.html

相关文章

微信小程序有哪几种变现途径?

纵观现在市面上的微信小程序,目前变现的途径主要有:广告变现、电商变现、游戏付费、服务付费等。 1.广告变现 广告变现是小游戏、工具类、资讯类小程序变现的主要方式。微信官方为游戏开发者提供的扶植政策,对于工具类、资讯类小程序&#…

产品经理如何突破职业瓶颈,杀出重围?

随着社会的进步和科技的发展,互联网行业从未停止过发展的脚步。而在这个充满机遇和挑战的赛道上,互联网产品经理的角色显得尤为重要。然而,随着互联网产品经理的数量逐年增加,内卷化现象也日益严重。那么,产品经理应该…

背上小书包准备面试之TypeScript篇

目录 typescript是啥?与javascript的区别? typescript数据类型? typescript中枚举类型?应用场景? typescript中接口的理解?应用场景? typescript中泛型的理解?应用场景&#xf…

790. 多米诺和托米诺平铺

题目描述&#xff1a; 主要思路&#xff1a; class Solution { public:int numTilings(int n) {long long f[n][4],mod1e97;f[0][0]1;f[0][1]f[0][2]0;f[0][3]1;for(int i1;i<n;i){f[i][0]f[i-1][3];f[i][1] (f[i-1][0]f[i-1][2])%mod;f[i][2] (f[i-1][0]f[i-1][1])%mod;f…

(leecode)密码检查

有点感觉&#xff0c;试试看~ 先贴解法&#xff0c;再说题目和思路 题解 #include <stdio.h> #include <string.h> #include <ctype.h>int main() {int N 0;scanf("%d",&N);getchar();while(N--) {char str[101] {0};scanf("%s&…

【Linux】简单线程池的设计与实现 -- 单例模式

前言对锁的封装整体代码LockGuard - RALLRALLMutex封装 对线程创建的封装整体代码成员函数解释声明 业务处理封装-加减乘除&#xff08;可有可无&#xff09;整体代码成员函数解释声明 线程池的设计与实现整体代码成员函数解释声明 展示 前言 线程池: 一种线程使用模式。线程过…

UI美工设计岗位的基本职责概述(合集)

UI美工设计岗位的基本职责概述1 1、有良好的美术功底、设计新颖&#xff0c;整体配色及设计创意理念&#xff0c;能够独立完成整个网站页面设计及制作; 2、熟练运用DIV CSS&#xff0c;HTML 设计制作网页 ; 3、熟练运用Photoshop,Dreamweaver,Coreldraw(或Illustrator),Fla…

Netty注解实现服务调用

在之前完成了原生服务间的简单通信&#xff0c;现在我们将它整合到Spring环境中&#xff0c;这里就以实现服务的远程调用&#xff0c;简单模拟即可&#xff0c;具体代码需要自己动手改造。 既然是服务调用&#xff0c;那我们就使用代理模式来实现。 新建代理类&#xff0c;这里…