获取上传图片作为base64而不是文件

问题描述

我已经创建了一个端点,以使用我的nodeJS API上传头像。

当我从POSTMAN使用端点时,端点工作正常。

但是当我从我的react-js应用程序中使用Fetch调用它时,它不起作用。

当我使用Fetch调用端点时,似乎未触发busboy.on('file',()= {...})。

react-js应用程序中的提取方法

export const fetchPostFile = async (url,file) => {

  try {

    const data = new FormData();
    data.append("image",file);
    
    const rawResponse = await fetch(url,{
      method: 'POST',body: data
    });

    return await rawResponse.json();

  } catch (error) {

    console.error(error);
    return {success: false,message: 'query_can_not_be_sent'};

  }

}

reactjs发送的输入formData:

------WebKitFormBoundary5WI3GuEx81A7nLq0
Content-disposition: form-data; name="image"

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/7QL6UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAt0cAQAAAgACHAEUAAIAARwbfgACAAIcAR4ACUFGUC1QSE9UTxwBKAaimTIzNDU2NzgcATwAATUcAUYACDIwMjAxMDExHAFQAAsxNTU5MjcrMDAwMBwBWgADGy1BHAFkAApBRlBfOFJWOUFQHAIAAAIAAhwCBQAZVEVOTklTLUZSQS1PUEVOLU1F...

上传头像的api方法

exports.postAvatar = async (request,response) => {

  response.set('Access-Control-Allow-Origin','*');
  response.set('Access-Control-Allow-Headers','*');

  const BusBoy = require('busboy');
  const fs = require('fs');
  const os = require('os');
  const path = require('path');

  const busboy = new BusBoy({ headers: request.headers });
  
  busboy.on('file',(fieldname,file,filename,encoding,mimetype) => {
    console.log('busboy.on(file)');
  });

  busboy.on('finish',async () => {
    console.log('busboy.on(finish)');
  });

  busboy.end(request.rawBody);

  return response.json({message: 'ok'});

}
当我从reactjs呼叫时,不会显示

busboy.on(file)消息,但会与邮递员呼叫一起显示

编辑:

我检查了POSTMAN输入,并且图像不是作为base64发送的,而是这样的:

postman body

在Postman中,我尝试在输入的字段文本中使用base64图片,结果与Fetch相同。

busboy可以接收base64编码的图像吗?还是可以将base64图片转换为文件输入?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)