base64转file文件

597 阅读1分钟

开发中,碰到过canvas文件转成base64图片,但是接口要求上传的是一个服务器链接,并非是base64,针对这个情况,做了如下处理:

  1. base64转blob
  2. blob转FormData
  3. FormData上传

直接copy代码

const dataurl = canvas.toDataURL("image/png");
const fileData = dataURLtoBlob(dataurl);
// fileData即为最终上传的file文件参数

function dataURLtoBlob(dataurl) {
    let img = atob(dataurl.split(',')[1]);
    let img_buffer = [];
    let i = 0;
    while (i < img.length) {
        img_buffer.push(img.charCodeAt(i));
        i++;
    }
    let formData = new FormData();
    formData.append("file",
        new Blob([new Uint8Array(img_buffer)],
        {type: "image/png"}),
        'qcode.png'
    );
    return formData;
}

说明:

  • 参数:dataurl是base64
  • formData是最终传到图片服务器的参数