请问这种data: 64位的图片 如何转化,传给后端?

请问这种data: 64位的图片 如何转化,传给后端?

我们之前都是这样传的,但是这种data:64位的不知道怎么传了?

 let file = new FormData();
 var img_file = files[0];
 file.append('quotation_order_print_image',img_file);
阅读 6.4k
2 个回答

async function base64ToFile(url){
  return new Promise((resolver) => {
    // 已知 base64 为图片 url,先加载它
    const image = new Image();
    image.src = url;
    image.onload = () => {
      // 把图片绘制到一个 canvas 上
      const canvas = document.createElement('canvas');
      const {width, height} = image;
      canvas.width = width;
      canvas.height = height;
      const ctx = canvas.getContext('2d');
      ctx.drawImage(image,0,0,width, height);

      // canvas 转 blob
      canvas.toBlob((blob) => {
        // blob 转 File
        const file = new File([blob], 'whatever.png', {type: 'image/png'});
        resolver(file);
      });
    }
  });
}

不过图片 type 信息全转为了 image/png

转念一想:data URL 毕竟也是 URL,那么可以直接 fetch 之:

async function base64ToFile(url = ""){
  const blob = await (await fetch(url)).blob();
  return new File([blob], "whatever");
}

本质上就是一个很长的字符串,就像传其他的字符串一样作为一个属性的值传过去就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏