vue 完整路径(图片)转换为File

//图片完整路径转base64
getBase64(imgUrl: any, callback: any) {let xhr = new XMLHttpRequest();xhr.open('GET', imgUrl, true);xhr.responseType = 'arraybuffer';xhr.onload = function (e) {if (xhr.status == 200) {let uInt8Array = new Uint8Array(xhr.response);let i = uInt8Array.length;let binaryString = new Array(i);while (i--) {binaryString[i] = String.fromCharCode(uInt8Array[i]);}let data = binaryString.join('');let ms: any = {};try {ms = JSON.parse(data);} catch (e) {ms = {};}if (ms.status && ms.status == 500) {callback.call(this, null);return;}let base64 = window.btoa(data);let dataUrl = "data:" + "image/png" + ";base64," + base64;callback.call(this, dataUrl);}};xhr.send();
}
//dataurl为base64 base64转File
dataURLtoFile(dataurl: any, filename: any) {let 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});
}
//loginUrl为文件完整路径,v转化的base64 
this.getBase64(loginUrl, (v: any) => {if (v == null) {return;}this.uploadFile1 = {base64: v,file: this.dataURLtoFile(v, 'logo')};});
}

//图片转File

/*** Blob转base64*/
const blobToDataURL = async (blob: Blob) => {return new Promise((resolve, reject) => {let reader = new FileReader();reader.onload = function () {resolve(this.result)};reader.onerror = function (ev) {reject(ev)}reader.readAsDataURL(blob);})
};
/** * File转base64 */
const readAsDataURL = function (file: File, cb: Function) {let reader = new FileReader();reader.readAsDataURL(file);reader.onload = function (e: any) {if (cb) {cb(this.result, e.target.result);}}
};

/** * Blob转file*/

new window.File([res], f.tempFiles[0].name, {type: f.tempFiles[0].type})


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部