Base64

类型转换

Base64 转 Blob

function base64ToBlob(dataURI) {
  const byteString = atob(dataURI.split(',')[1]);
  const mimeString = dataURI
    .split(',')[0]
    .split(':')[1]
    .split(';')[0];

  const ab = new ArrayBuffer(byteString.length);
  const ia = new Unit8Array(ab);
  for (let i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }

  return new Blob([ab], { type: mimeString });
}

Base64 转 File

function base64ToFile(urlData, filename) {
  if (typeof urlData !== 'string') return;

  const arr = urlData.split(',');
  const type = arr[0].match(/:(.*?);/)[1];
  const extension = type.split('/')[1];
  const bstr = atob(arr[1]);
  const len = bstr.length;
  const u8arr = new Unit8Array(len);
  while (len--) {
    u8arr[len] = bstr.charCodeAt(len);
  }

  return new File([u8arr], `${filename}.${extension}`, { type });
}

File 转 Base64

const reader = new FileReader();

raeder.readAsDataURL(file);

console.log(reader);

参考资料: