2017-02-10 63 views
0

我很難一起插入線條。不能保存recorder.js記錄wav文件到節點/快遞後端

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

但我的文件是不是在年底可讀......

我知道我應該在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 

我真不不介意數據是通過FormData發送的,還是jsonwww-encoded發送的,我只是想讓它工作。

在此先感謝!

回答

2

您不需要FormData實例。那只是當你試圖發送更多的東西時。更改您的客戶端請求此:

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

我甚至沒有想到嘗試這種之一!謝了哥們! –

相關問題