用mui 与网易IM做了个在线聊天 ,发送文件时需要转换成Blob对象
plus.io.resolveLocalFileSystemURL(data,function(entry){//获取文件对象
entry.file(function(file){//获取文件的数据
var fileReader = new plus.io.FileReader();//创建读取文件对象
fileReader.readAsDataURL(file);
fileReader.onloadend = function(e){//读取成功并以Base64编码呈现
var bo=dataURLtoBlob(e.target.result);//将base64图片转换成Blob
}
}
})
/**
*dataURL(base64字符串)转换为Blob(二进制对象)
*/
function dataURLtoBlob(dataurl) {
var arr = dataurl.split(',');
var mime = arr[0].match(/:(.*?);/)[1];// 获取文件类型
var bstr = atob(arr[1].replace(/\s/g, ''));//获取数据
var n = bstr.length;
var u8arr = new Uint8Array(n);//8 位无符号整数值的类型化数组
while (n--) {
u8arr[n] = bstr.charCodeAt(n);//返回指定位置的字符的 Unicode编码 赋给数组指定位置
}
return new Blob([u8arr], {type: mime});//值,类型
}