Blob另存为[object Object] Node.js

我想用HTML5录制来自麦克风的音频,然后将其发送到服务器进行保存。但是,当前保存的文件仅包含[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 }

您能告诉我为什么它不起作用以及如何解决吗?

回答:

我终于完成了这项工作。使它起作用的方法是在客户端上对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'});

}

});

};

以上是 Blob另存为[object Object] Node.js 的全部内容, 来源链接: utcz.com/qa/428016.html

回到顶部