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可直接展示
 
posted @ 2023-07-11 10:16  郭大蛋子  阅读(261)  评论(1编辑  收藏  举报