无法将 recorder.js 录音 wav 文件保存到 node/express 后端
Cannot save recorder.js record wav file to node/express backend
我很难将线路连接在一起。
我正在使用 videojs-record,这是我拥有的:
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'}
});
});
然后在服务器端:
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
中的 file
键,但我还没有找到。
阅读了很多关于此的示例,但没有人找到适合我的解决方案...
从 :
开始,我刚刚使用以下 curl 请求使我的后端工作
curl -X POST --data-binary @"public/sounds/1c0334bff518849e00aadd754b1a94f0.wav" -H "Content-Type: audio/wav" http://192.168.99.100:3000/api/submit_record
我真的不介意数据是通过 FormData
、json
还是 www-encoded
发送的,我希望它能正常工作。
提前致谢!
您不需要 FormData
实例。这仅适用于您尝试发送的不仅仅是一件事。将您的 client-side 请求更改为:
recorder.on('finishRecord', function(){
$http.post('/api/submit_record', recorder.recordedData, {
headers: {'Content-Type': 'audio/wav'}
});
});
然后您可以将 server-side 代码更改为:
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'))
});
我很难将线路连接在一起。
我正在使用 videojs-record,这是我拥有的:
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'}
});
});
然后在服务器端:
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
中的 file
键,但我还没有找到。
阅读了很多关于此的示例,但没有人找到适合我的解决方案...
从
curl -X POST --data-binary @"public/sounds/1c0334bff518849e00aadd754b1a94f0.wav" -H "Content-Type: audio/wav" http://192.168.99.100:3000/api/submit_record
我真的不介意数据是通过 FormData
、json
还是 www-encoded
发送的,我希望它能正常工作。
提前致谢!
您不需要 FormData
实例。这仅适用于您尝试发送的不仅仅是一件事。将您的 client-side 请求更改为:
recorder.on('finishRecord', function(){
$http.post('/api/submit_record', recorder.recordedData, {
headers: {'Content-Type': 'audio/wav'}
});
});
然后您可以将 server-side 代码更改为:
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'))
});