2017-02-10 13 views
0

行をつなぎ合わせるのに苦労します。その後recorder.jsレコードwavファイルをノード/エクスプレスバックエンドに保存できません

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(); 
    }); 
}); 

しかし、私のファイルは

...最後に読めないです

私はvideojs-recordを使用していますが、ここで私が持っているものです

何とか私はformDatafileキーへの参照を持っているはずですが、どこに見つかりませんでした。

が、このことについて多くの例を読んでいますが、誰も私のための解決策を見つけていない...

私はちょうどthereなどから、次のカールの要求との私のバックエンドの作品を​​作った:

curl -X POST --data-binary @"public/sounds/1c0334bff518849e00aadd754b1a94f0.wav" -H "Content-Type: audio/wav" http://192.168.99.100:3000/api/submit_record 

私は本当にドンデータがFormDatajson、またはwww-encodedに送信された場合は心配してください。

ありがとうございます!

答えて

2

FormDataインスタンスは必要ありません。それはあなたがただ1つ以上のことを送ろうとしているときのためのものです。

recorder.on('finishRecord', function(){ 
    $http.post('/api/submit_record', recorder.recordedData, { 
    headers: {'Content-Type': 'audio/wav'} 
    }); 
}); 

そして、あなたはおそらくこれに、サーバー側のコードを変更することができます:あなたのクライアント側の要求はこれに変更し

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')) 
}); 
+0

私も、このいずれかをしようと考えていませんでした!ありがとう! –

関連する問題