file、blob、base64相互转换
(90条消息) (前端)file、blob、base64相互转换_前端blob转base64_由本的博客-CSDN博客
blob
blob转file
const blob = '.....' const file = new File([blob], 'name.wav', {type: 'audio/wav'});
blob转base64
const blob = '.....' const a = new FileReader(); a.readAsDataURL(blob); a.onload = (e) => { const base64 = e.target.result }
blob转blobUrl
const blob = '.....' window.URL = window.URL || window.webkitURL; const blobURL = window.URL.createObjectURL(blob);
file
file转blob
const file = '.....' const a = new FileReader(); a.readAsDataURL(file); a.onload = (e) => { const blob = new Blob([e.target.result], { type: file.type }) // 如果发现乱码检查一下type赋值的对不对 }
file转base64
const file = '.....' const a = new FileReader(); a.readAsDataURL(file); a.onload = (e) => { const base64 = e.target.result }
file转buffer
const file = '.....'
const buffer = fileReader.readAsArrayBuffer(file)
file转binary(二进制格式)
const file = '.....'
const buffer = fileReader.readAsBinaryString(file)
file转file(用于修改file的只读属性name、type、lastModified)
const newFile = new File([file], 'newName.wav', {type: 'audio/wav', lastModified: Date.now()})
base64
base64转file
const arr = base64.split(',') const type = arr[0].match(/:(.*?);/)[1] const size = window.atob(arr[1]) let n = size.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = size.charCodeAt(n) } const file = new File([u8arr], name, { type })
base64转blob
const arr = base64.split(',') const type = arr[0].match(/:(.*?);/)[1] const size = window.atob(arr[1]) let n = size.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = size.charCodeAt(n) } const blob = new Blob([u8arr], { type })
base64操作
const arr = base64.split(',') const type = arr[0].match(/:(.*?);/)[1] // image/jpeg const size = window.atob(arr[1]).length base加解密 -- 不支持中文 场景:由于一些网络通讯协议的限制,必须对原数据进行编码后才可发送,后端得到后再解码得到原数据,例如,发送某些含有 ASCII 码表中 0 到 31 之间的控制字符的数据。 base转码 const base64 = window.btoa('a') base解码 const string = window.atob(base64)
转载自:(64条消息) (前端)file、blob、base64相互转换_由本的博客-CSDN博客_前端file转base64