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'}); } }); };
- 当Angular不可用时,如何等待一个元素与量angular器可见?
- 如何在Sails.js v0.11中触发自定义套接字事件?
- AngularJS和nodeJs Express:路由和刷新
- HTML5video无法播放和媒体请求
- 如何在Angular / Node.js / Express中将客户端parameter passing给服务器端
- 无法在NodeJs,AngularJs Web应用程序上加载资源:net :: ERR_CONNECTION_REFUSED
- 直接在前端自动更新mongodb的更改,而不使用Node Socket.io和angularjs进行页面刷新
- Heroku Node.js应用程序在本地工作,但部署时不工作
- angular控制器来检索JSON数据