首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将recorder.js记录wav文件保存到节点/快速后端

无法将recorder.js记录wav文件保存到节点/快速后端
EN

Stack Overflow用户
提问于 2017-02-10 18:55:09
回答 1查看 478关注 0票数 0

我很难把电线插在一起。

我正在使用录像-记录,以下是我所拥有的:

代码语言:javascript
复制
recorder.on('finishRecord',  function(){
  var formData = new FormData();
  formData.append('file', recorder.recordedData);
  $http.post('/api/submit_record', formData, { // Using Angular...
    headers: {'Content-Type': 'audio/wav'}
  });
});

然后在服务器端:

代码语言:javascript
复制
let bodyParser = require('body-parser');
let app = express();

app.post('/api/submit_record', bodyParser.raw({ type: 'audio/wav', limit: '1mb' }), (req, res) => {
  console.log(req.body);
  fs.writeFile('public/myFile.wav', req.body, function(err) {
    console.log('File uploaded', fileName);
    res.write('File saved');
    res.end();
  });
});

但我的文件最后无法读懂..。

我知道,不知何故,我应该在formData中引用一个formData密钥,但我还没有找到它的位置。

读了很多关于这个的例子,但没人给我找到解决办法.

我刚刚完成了从那里发出的以下curl请求的后端工作

代码语言:javascript
复制
curl -X POST --data-binary @"public/sounds/1c0334bff518849e00aadd754b1a94f0.wav" -H "Content-Type: audio/wav" http://192.168.99.100:3000/api/submit_record

如果数据是通过FormDatajsonwww-encoded发送的,我真的不介意,我只想让它正常工作。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 20:42:52

您不需要FormData实例。那只是当你试图发送的不仅仅是一件东西的时候。将客户端请求更改为:

代码语言:javascript
复制
recorder.on('finishRecord',  function(){
  $http.post('/api/submit_record', recorder.recordedData, {
    headers: {'Content-Type': 'audio/wav'}
  });
});

然后您可能可以将服务器端代码更改为:

代码语言:javascript
复制
app.post('/api/submit_record', (req, res) => {
  req.pipe(fs.createWriteStream('public/myFile.wav'))
    .on('error', (e) => res.status(500).end(e.message))
    .on('close', () => res.end('File saved'))
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42166711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档