url网络地址图片,blob,base64,File互转
base64转blob
var arr = base64url.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
// image/png是base64对应的文件类型
const blob = new Blob([u8arr], {type:"image/png"})
blob转File
const transToFile = async(blob, fileName, fileType) => {
return new window.File([blob], fileName, {type: fileType})
}
let textContain = transToFile(blob, "文件名.png", "image/png")
// 转换完成后可以将file对象传给接口
textContain.then( (res)=> {
console.log(res, 1)
})
}
blob转base64
async function blobToBase64(blob: Blob, obj: any) {
let buffer = await blob.arrayBuffer()
let bytes = new Uint8Array(buffer);
let binary = ''
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
//'data:'+blobType[obj.FileExtention.split(".")[1]]+';base64,' + window.btoa(binary) 就是bse64地址
obj.src = 'data:'+blobType[obj.FileExtention.split(".")[1]]+';base64,' + window.btoa(binary)
}
网络地址转blob
axios.get(v.fileUrl, {params: {}, responseType: 'blob'}).then(res => {
res.data是blob文件
URL.createObjectURL用于创建 URL 的 File 对象、Blob 对象或者 MediaSource 对象。
返回值
一个DOMString包含了一个对象URL,该URL可用于指定源 object的内容。类似:blob:http://192.168.20.36:5173/e9562712-5dd2-42fe-8440-d4a6cd5bcdb9,感觉就像是返回了一个本地的内存里面的地址,可以直接用标签展示
const src = URL.createObjectURL(res.data)
src可直接展示