您好,欢迎访问一九零五行业门户网

聊聊PHP中Base64 、Blob与File的相互转换方法

本篇文章给大家带来了关于php的相关知识,其中主要跟大家聊一聊base64 、blob和file之间是怎么相互转换的?感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。
前言
在获取图片时,遇到需要转换格式的情况,所以记录下来分享。
正文
一、格式的基本介绍
base64
base64是网络上最常见的用于传输8bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的方法  base64文档入口
举个例子
blob
blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 readablestream来用于数据操作。 blob文档入口
举个例子
file
文件(file)接口提供有关文件的信息,并允许网页中的 javascript 访问其内容。 file文档入口
举个例子
就不过多介绍了,主要来讲如果转换。
二、如何判断这三种格式1.判断是否为base64字符串
// 判断是否为base64格式字符串function isbase64(str) { //正则表达式判断 var reg = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i; return reg.test(str) //返回 true or false}
2.判断是否为blob对象
console.log(data instanceof blob) //ture or false
3.判断是否为file对象
console.log(data instanceof file && !data instanceof blob) //ture or false
ps:
blob和file都用instanceof来判断是否为对应类型数据
有一点需要注意,file对象也是blob对象 ,因为file继承于blob,所以其中的判断逻辑可以自己定义
三、格式之间的转换
1.base64转换为file
function dataurltofile(dataurl, filename) { 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 file([u8arr], filename, { type: mime });}
需要传两个参数,第一个是数据,第二个是自定义文件名字符串2.base64转换为blob
function dataurltoblob(dataurl, filename) { 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 });}
和转file基本一样,就最后一句return不一样3.blob转file
function blobtofile(blob) { return new file([blob], 'screenshot.png', { type: 'image/jpeg' })}
这里和base64转file其实用的都是new file()这个方法,上面的第二个参数是传进来的,这里是定死的,这个参数不是很重要,可以自行修改函数,方法都已经提供了,直接使用就可以。
推荐学习:《php视频教程》
以上就是聊聊php中base64 、blob与file的相互转换方法的详细内容。
其它类似信息

推荐信息