Javascript 将base64转换为二进制文件并将其附加到NodeJs中的formdata

Javascript 将base64转换为二进制文件并将其附加到NodeJs中的formdata,javascript,node.js,next.js,Javascript,Node.js,Next.js,如标题所示 我有下面一段代码是在NextJSAPI上编写的,它是在将图像发送到另一个API进行进一步处理之前,在画布中相应地编辑图像(使用节点画布) /* At sample.js in NextJS API */ import axios from 'axios'; import { loadImage } from 'canvas'; import FormData from 'form-data'; export default (req, res) => { const

如标题所示

我有下面一段代码是在NextJSAPI上编写的,它是在将图像发送到另一个API进行进一步处理之前,在画布中相应地编辑图像(使用节点画布)

/* At sample.js in NextJS API */
import axios from 'axios';
import { loadImage } from 'canvas';
import FormData from 'form-data';

export default (req, res) => {
    const { source } = req.body;

    /* Something in here */

    loadImage(source).then(async image => {
    let cvs = createCanvas(),
        ctx = cvs.getContext('2d'),
        iWidth = image.naturalWidth,
        iHeight = image.naturalHeight;

    /* Some edit happening here to image */

      ctx.drawImage(
        image,
        0,
        0,
        iWidth,
        iHeight,
        0,
        0,
        w,
        h
      );

      let resizedb64 = cvs.toDataURL();
      let trimmedB64 = resizedb64.replace(/^data:image\/[a-z]+;base64,/, '');

      const fd = new FormData();
      fd.append('file', trimmedb64);

      const opts = {
        method: 'POST',
        url: pathToAnotherAPIHere,
        headers: fd.getHeaders(),
        data: fd
      };

      let promise = await axios(opts); 
  });
}
因此,如果目标API接受base64映像,则上述方法可以起作用。。但是如果目标API只接受二进制文件呢?有没有办法将base64转换为二进制文件?从我读到的内容来看,在NodeJs中实现这一点的唯一方法是首先使用fs将base64作为文件写入,然后再将其作为二进制文件读取,但这对我来说似乎很麻烦,我不完全理解这样做的必要性


谢谢

不要转换为数据URL,请使用节点画布方法直接转到缓冲区

然后您可以直接使用此缓冲区

const buf = canvas.toBuffer();
fd.append('file', buf);

不要转换为数据URL,使用节点画布方法直接转到缓冲区

然后您可以直接使用此缓冲区

const buf = canvas.toBuffer();
fd.append('file', buf);

使用函数btoa()@John我想你指的是函数atob(),我不知道node.js的用法。。。节点获取也可能有帮助@Wayne是的,相反,atob.使用函数btoa()@John我想你指的是函数atob(),我不知道node.js的用法。。。节点获取也可能有帮助@韦恩:是的,正好相反,阿托布。