先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
})
}
// 通过blob:url读取实际的ArrayBuffer数据
const H5ReadBlobUrlArrayBuffer = (blobUrl) => {
return new Promise(async (resolve, reject) => {
try {
const reader = new FileReader()
// blob数据转file对象数据
const fileBlob: any = await blobURLToBlob(blobUrl)
const file = new window.File([fileBlob], ‘file.name’, { type: ‘file.type’ })
// 读取file对象ArrayBuffer
reader.readAsArrayBuffer(file)
reader.onload = function (e) {
resolve(e?.target?.result)
}
} catch (e) {
reject(e)
}
})
}
// 通过blob:url读取实际的base64:
const H5ReadBlobUrlBase64 = (blobUrl) => {
return new Promise(async (resolve, reject) => {
try {
const reader = new FileReader()
// blob数据转file对象数据
const fileBlob: any = await blobURLToBlob(blobUrl)
const file = new window.File([fileBlob], ‘file.name’, { type: ‘file.type’ })
// 读取file对象ArrayBuffer
reader.readAsDataURL(file)
reader.onload = function (e) {
resolve(e?.target?.result)
}
} catch (e) {
reject(e)
}
})
}
注意:实际上 h5都是使用fileReader的api来读取的,arrayBuffer是:readAsArrayBuffer,而base64是readAsDataURL,不但图片,文件也能这样读取base64的。
#### APP获取 ArrayBuffer以及读取base64:
const H5PlusReadFileArrayBuffer = (filePath) => {
return new Promise((resolve, reject) => {
try {
plus.io.resolveLocalFileSystemURL(
filePath,
function (entry) {
entry?.file(function (file) {
const fileReader = new plus.io.FileReader()
fileReader.readAsDataURL(file, ‘utf-8’)
fileReader.onloadend = function (evt) {
const result = {
base64: evt.target.result.split(‘,’)[1],
size: file.size,
}
resolve(uni.base64ToArrayBuffer(result.base64))
}
})
},
function (error) {
reject(error)
},
)
} catch (error) {
reject(error)
}
})
}
app方面是直接先读取base64,再读取arrayBuffer,所以一气呵成。
#### 综合:
import SparkMD5 from ‘spark-md5’;
export interface FileReaderInfo {
fileHeader64:string;//–base64形式的文件前一段内容,用于传递magicNumber进行判断。
base64:string;
arrayBuffer:any;
tempPath:string;//形式如下:blob:http://localhost:3000/5fd140d3-1372-4394-8b08-0cba8c508099
mime:string;
errMsg?:string;
md5:string,//–获取文件md5.
}
// #ifdef H5
// 通过blob:url读取实际的blob数据
function h5_blobURLToBlob (url:string) :Promise {
return new Promise((resolve, reject) => {
var http = new XMLHttpRequest();
http.open(‘GET’, url, true)
http.responseType = ‘blob’;
http.onload = function (e) {
if (this.status == 200 || this.status === 0) {
resolve(this.response)
} else {
reject(this.status)
}
};
http.send()
})
}
// 通过blob:url读取实际的ArrayBuffer数据
function H5ReadBlobUrl(blobUrl:string,mimeType:string): Promise {
let intervalInst:any=null;
const fileinfo:FileReaderInfo={
fileHeader64:"",
tempPath:blobUrl,
arrayBuffer:null,
base64:"",
mime:mimeType,
md5:"",
};
return new Promise<FileReaderInfo>(async (resolve, reject) => {
try {
const reader = new FileReader();
const reader64 = new FileReader();
// blob数据转file对象数据
const fileBlob: any = await h5_blobURLToBlob(blobUrl);
const file = new window.File([fileBlob], 'file.name', { type: mimeType });
// 读取file对象ArrayBuffer
reader.readAsArrayBuffer(file);
reader64.readAsDataURL(file);
reader.onload = function (e) {
const data:any=e?.target?.result;
// let spark = new SparkMD5(); // 创建md5对象(基于SparkMD5)
let spark = new SparkMD5.ArrayBuffer();
spark.append(data);
fileinfo.md5=spark.end();
fileinfo.arrayBuffer=data;
};
reader64.onload = function (e) {
fileinfo.base64=(e?.target?.result+"");
let subPosIdx = (fileinfo.base64 + "").indexOf(",");
let headerContent = fileinfo.base64.substr(subPosIdx + 1, 160);
fileinfo.fileHeader64=headerContent;
};
intervalInst=setInterval(()=>{
if(fileinfo.base64&&fileinfo.arrayBuffer){
clearInterval(intervalInst);
resolve(fileinfo);
}
},100);
} catch (e) {
if(intervalInst){
clearInterval(intervalInst);
}
reject(e)
}
})
}
// #endif
// #ifdef APP-PLUS
// 通过plus.io读取文件的ArrayBuffer数据
function H5PlusReadFile (filePath:string,mimeType:string) :Promise {
const fileinfo:FileReaderInfo={
fileHeader64:“”,
tempPath:filePath,
arrayBuffer:null,
base64:“”,
mime:mimeType,
md5:“”,
};
return new Promise((resolve, reject) => {
try {
plus.io.resolveLocalFileSystemURL(
filePath,
function (entry:any) {
entry?.file(function (file:any) {
const fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file, ‘utf-8’);
fileReader.onloadend = function (evt:any) {
fileinfo.base64=(evt?.target?.result+“”);
let subPosIdx = (fileinfo.base64 + “”).indexOf(“,”);
let headerContent = fileinfo.base64.substr(subPosIdx + 1, 160);
fileinfo.fileHeader64=headerContent;
const result = {
base64: evt.target.result.split(‘,’)[1],
size: file.size,
};
const data:any=uni.base64ToArrayBuffer(result.base64);
// let spark = new SparkMD5(); // 创建md5对象(基于SparkMD5)
let spark = new SparkMD5.ArrayBuffer();
spark.append(data);
fileinfo.md5=spark.end();
fileinfo.arrayBuffer=data;
resolve(fileinfo);
}
})
},
function (error) {
reject(error)
},
)
} catch (error) {
reject(error)
}
})
}
// #endif
function MpReadFile(filePath:string,mimeType:string) :Promise{
const fileinfo:FileReaderInfo={
fileHeader64:“”,
tempPath:filePath,
arrayBuffer:null,
base64:“”,
mime:mimeType,
md5:“”,
};
return new Promise((resolve, reject) => {
if (uni.canIUse(‘getFileSystemManager’) && uni.getFileSystemManager) {
}else{
fileinfo.errMsg="无效环境,不可调用api!";
reject(fileinfo);
return ;
}
const fs = uni.getFileSystemManager();
const data:any = fs.readFileSync(filePath);
// let spark = new SparkMD5(); // 创建md5对象(基于SparkMD5)
let spark = new SparkMD5.ArrayBuffer();
spark.append(data);
fileinfo.md5=spark.end();
fileinfo.arrayBuffer=data;
fs.readFile({// 【重点来啦】人家自提供的转码API
filePath: filePath,// 所需转码图像路径
encoding: "base64",// 转码类型
success: (res) => {
// 生成base64
// let imageBase64 = 'data:image/' + image.type + ';base64,' + res.data;
let imageBase64 = res.data;
console.log('转base64后:', imageBase64);
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
64后:', imageBase64);
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-yXCGiCsY-1713156538466)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!