一些网页的数据处理函数包括blob对象和bloburl和dataURL互转
包括一些参考资料
const data = {
// dataurl数据转blob文件
// 什么是DataUrl?https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
// 什么是blob? https://developer.mozilla.org/zh-CN/docs/Web/API/Blob
// 此函数网上极为常见,eslint之后略有变化。
dataURLtoBlob(dataurl) {
const arr = dataurl.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
// eslint-disable-next-line no-plusplus
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
},
// 在h5环境下,bloburl转blob对象
h5BlobUrlToBlobObj(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function onload(e) {
if (this.status === 200) {
const Blob = this.response;
resolve(Blob);
} else {
reject(this.status, e);
}
};
xhr.send();
});
},
// blob对象转blobUrl
// 参考 https://www.jianshu.com/p/75bfd7cd9e1b
blobObjToBlobUrl(obj) {
return (URL || webkitURL).createObjectURL(obj);
},
/// /拷贝数据scheme中指明的数据,没有不拷贝
// 用于从一份完整数据中,抽离部分数据(某个模块)使用
copyDataByScheme(source, scheme) {
const retData = {};
if (source && scheme) {
// eslint-disable-next-line no-restricted-syntax
for (const key in scheme) {
if (scheme[key] !== undefined) {
retData[key] = source[key];
}
}
}
return retData;
},
};