Javascript Nodejs-尝试将Blob保存到文件服务器

Javascript Nodejs-尝试将Blob保存到文件服务器,javascript,node.js,mongodb,blob,Javascript,Node.js,Mongodb,Blob,我在尝试将Blob保存到文件服务器时遇到问题 我试图做的是从用户的网络摄像头捕获视频,然后在客户端显示,然后将其发布到文件服务器上,在那里我可以访问它 下面是创建在录制结束时显示的.webm Blob的代码 函数嵌入视频预览(可选的\u url){ var url=可选的_url | | null; var video=document.querySelector(“#视频预览视频”)| | null; var-webmBlob; 如果(!视频){ video=document.createEl

我在尝试将Blob保存到文件服务器时遇到问题

我试图做的是从用户的网络摄像头捕获视频,然后在客户端显示,然后将其发布到文件服务器上,在那里我可以访问它

下面是创建在录制结束时显示的.webm Blob的代码

函数嵌入视频预览(可选的\u url){
var url=可选的_url | | null;
var video=document.querySelector(“#视频预览视频”)| | null;
var-webmBlob;
如果(!视频){
video=document.createElement('video');
video.autoplay=true;
video.controls=false;
video.loop=true;
video.style.width=canvasW+'px';
video.style.height=canvasH+‘px’;
document.querySelector(“#视频预览”).appendChild(视频);
}否则{
window.URL.revokeObjectURL(video.src);
}
如果(!url){
webmBlob=来自ImageArray的打击(帧,1000/60);
url=window.url.createObjectURL(webmBlob);
}
video.src=url;
//在这里,我通过一个表单将它发布到我的服务器
var videoURLSource=document.createElement('input');
videoURLSource.id='videoURLSource';
videoURLSource.name='videoURLSource';
videoURLSource.type='text';
videoURLSource.value=url.slice(5);
submitForm.appendChild(videoURLSource);
var blobSource=document.createElement('input');
blobSource.id='blobSource';
blobSource.name='blobSource';
blobSource.value=webmBlob;
submitForm.appendChild(blobSource);
}
因此,我保存了元素的src属性中使用的url,下面是服务器端发生的情况-我将其写入磁盘,并通过mongoose将其保存在mongoDB数据库中:

app.post('/submit',函数(req、res、err){
//从POST获取数据
var receivedAnswer=req.body.answer;
var receivedURL=req.body.videoURLSource[0];
var-receivedBlob;
//获取所有的blob块
receivedBlob+=req.body.blobSource[0];
fs.writeFile(“test.webm”、toSaveBlob、函数(err){
如果(错误){
返回console.log(err);
}
log(“文件写入磁盘”);
});
//将提交的数据放入mongoose模式
var a=新答案({答案:receivedAnswer,url:receivedURL,blob:receivedBlob});
res.send('submittedreponse:'+receivedAnswer+'
'+'url:'+receivedURL+'
'+'blob:'+receivedBlob); a、 保存(功能(错误、数据){ if(err)console.log(err); else console.log('保存:',数据); }); });
实际情况是test.webm确实是在我当前的目录中编写的,但它只有几个字节,而不是预期的几兆字节

所以我猜测我是在保存第一个块而没有保存其余的块,但是我环顾四周,还没有找到在响应POST请求时这样做的方法

我也不确定表单API是否支持blob的传递

我研究过web套接字,但我对它一无所知,所以我宁愿尝试用另一种方法来解决它,更糟糕的是,如果没有其他方法,我会尝试使用套接字


感谢您的帮助

你不应该使用某种bodyParser吗?我猜是像Busboy这样的东西,然后用
.on('data')
等来捕获块?你好!我想这是我遗漏的一部分,但我也意识到我的问题可能只是在我试图做的总体上。。。我想保存一个不是由用户手动上传的文件。在前端表单中,我将file字段的值设置为要保存的Blob,它告诉我:未能在“HTMLInputElement”上设置“value”属性:此输入元素接受文件名,该文件名只能通过编程设置为空字符串。甚至有可能做这样的事吗?