问题描述
我已经创建了一个端点,以使用我的nodeJS API上传头像。
当我从POSTMAN使用端点时,端点工作正常。
但是当我从我的react-js应用程序中使用Fetch调用它时,它不起作用。
当我使用Fetch调用端点时,似乎未触发busboy.on('file',()= {...})。
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...
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中,我尝试在输入的字段文本中使用base64图片,结果与Fetch相同。
busboy可以接收base64编码的图像吗?还是可以将base64图片转换为文件输入?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)