Blob保存为 Nodejs

我想用HTML5录制来自麦克风的audio,然后发送到服务器进行保存。 但是目前保存的文件只包含[object Object]

这里是我的代码的一些片段。

前端:

 console.log(blob); $http.post('/api/save_recording', blob) .success(function(new_recording) { console.log("success"); }) 

日志打印:

 Blob {type: "audio/wav", size: 237612, slice: function} success 

后端:

 exports.saveRecording = function(req, res) { console.log(req.body); fs.writeFile("temp/test.wav", req.body, function(err) { if(err) { console.log("err", err); } else { return res.json({'status': 'success'}); } }) } 

日志打印: { type: 'audio/wav', size: 786476 }

你能告诉我为什么这不起作用,如何解决?

我终于得到了这个工作。 实现这个function的方法是在客户端上对blob进行编码,然后在服务器上进行解码。

前端:

 // converts blob to base64 var blobToBase64 = function(blob, cb) { var reader = new FileReader(); reader.onload = function() { var dataUrl = reader.result; var base64 = dataUrl.split(',')[1]; cb(base64); }; reader.readAsDataURL(blob); }; blobToBase64(blob, function(base64){ // encode var update = {'blob': base64}; $http.post('/api/save_recording', update) .success(function(new_recording) { console.log("success"); }); }); 

后端:

 exports.saveRecording = function(req, res) { var buf = new Buffer(req.body.blob, 'base64'); // decode fs.writeFile("temp/test.wav", buf, function(err) { if(err) { console.log("err", err); } else { return res.json({'status': 'success'}); } }); };