Node.js 将BLOB发送到nodejs API会导致服务器上出现空正文
我需要发送BLOB到服务器,以便在同一个服务器上生成一个映像 我正在reactJs客户端上使用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',
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');
});