Node.js 将BLOB发送到nodejs API会导致服务器上出现空正文

Node.js 将BLOB发送到nodejs API会导致服务器上出现空正文,node.js,reactjs,blob,axios,Node.js,Reactjs,Blob,Axios,我需要发送BLOB到服务器,以便在同一个服务器上生成一个映像 我正在reactJs客户端上使用axios,并使用此代码发送数据 /** * Returns PDF document. * */ getPDF = (blob) => { let formatData = new FormData(); formatData.append('data', blob); return axios({ method: 'post',

我需要发送BLOB到服务器,以便在同一个服务器上生成一个映像

我正在reactJs客户端上使用
axios
,并使用此代码发送数据

 /**
 * Returns PDF document.
 *
 */
getPDF = (blob) =>
{
    let formatData = new FormData();
    formatData.append('data', blob);

    return axios({
        method: 'post',
        url: 'http://172.18.0.2:8001/export/pdf',
        headers: { 'content-type': 'multipart/form-data' },
        data: {
            blob: formatData
        }
    }).then(response => {
        return {
            status: response.status,
            data: response.data
        }
    })
}
我尝试了
console.log
这个
blob
值在客户端,并且有常规数据

但服务器上的请求正文为空

/**
 * Exports data to PDF format route.
 */
app.post('/export/pdf', function (request, response) {
    console.log(request.body.blob);


    response.send('ok');

});
若我在发送blob时删除了头,但仍为空,但若我删除了blob并发送了一些字符串,则服务器将接收数据


但当blob被发送时,服务器的主体是空的

您是否正在使用
正文解析器

body解析器
不处理
multipart
body,这就是
FormData
提交时的内容。 相反,请使用类似的模块


NodeJS
本机不处理
多部分/表单数据
,因此您必须使用外部模块,例如:-
multer

代码示例(未测试):

您可以阅读有关multer的信息
我希望这对你有用。

我有两个问题需要解决。1 firebase函数有一个不允许multer的错误。2您可能从response.blob()返回一个blob,这似乎也不会为firebase函数生成格式正确的blob

let multer = require('multer');
let upload = multer();

app.post('/export/pdf', upload.fields([]), (req, res) => {
  let formData = req.body;
  console.log('Data', formData);
  res.status(200).send('ok');
});
var upload = multer({ dest: __dirname + '/public/uploads/' });
var type = upload.single('upl');

/**
 * Exports data to PDF format route.
 */
app.post('/export/pdf', type, function (request, response) {
    // Get the blob file data
    console.log(request.file);
    response.send('ok');

});