我需要将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时,服务器的主体为空。
答案 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。