将BLOB发送到nodejs API会导致服务器上的主体为空

时间:2018-07-27 06:44:30

标签: 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',
        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时,服务器的主体为空。

3 个答案:

答案 0 :(得分:2)

for( i <- 1 to 5) { spark.sql("SELECT * FROM activity_counts").show() Thread.sleep(1000) } 本机不处理NodeJS,因此您必须使用外部模块,例如:-multipart/form-data

代码示例(未经测试):

multer

您可以阅读有关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'); }); here的信息 我希望这对您有用。

答案 1 :(得分:1)

您使用body-parser吗?

body-parser不处理multipart提交的FormData正文。 而是使用类似multer

的模块
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');
});

答案 2 :(得分:0)

我有2个必须解决的问题。 1个Firebase函数有一个不允许混音的错误。 2您可能会从response.blob()中获得一个Blob,并且似乎也无法为Firebase函数生成正确格式的Blob。