开发中,碰到过canvas文件转成base64图片,但是接口要求上传的是一个服务器链接,并非是base64,针对这个情况,做了如下处理:
- base64转blob
- blob转FormData
- 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是最终传到图片服务器的参数