2017-12-19 7 views
0

私はMedaRecroderストリームをaudio/webm形式で記録しています。私はそれをノードサーバーに送信しています。私はreq.filesの下のレスポンスでファイルを見ることができますが、私がそれらを再生すると、エンコーディングエラーがあるように聞こえます。blob/formdataからノードサーバーにオーディオファイルを書き込む方法

私はポストを処理しています私は、サーバーへのオーディオファイルの書き込みしようとしている(理想的にwavファイルが、WEBMに行います)ので、私は自分のサーバー上でオーディオ

function onRecordingReady(e) { 
    var audio = document.getElementById('audio'); 
    var tag = document.getElementById('tag').value 
    audio.src = URL.createObjectURL(e.data); 
    audio.play(); 
    var formData = new FormData() 
    formData.append('source', e.data); 
    formData.append('tag', tag); 
    $.ajax({ 
    url: 'http://localhost:3300/api/kb8', 
    type: "POST", 
    data:formData, 
    processData: false, 
    contentType: false, 
    success: function(data) { 
      console.log(data); 
    } 
    }); 

にアクセスして再生することができますこの

const express = require('express'); 
const bodyParser = require('body-parser'); 
const multer = require('multer'); 
const fs = require('fs'); 
const wav = require('wav'); 
let upload = multer(); 
const app = express(); 
const PORT = process.env.PORT || 3300; 
app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies 
    extended: true 
})); 
app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.get('/', function(req, res){ 
    res.send('hello world'); 
}); 

app.post('/api/kb8', upload.any(), function(req, res) { 
    let formData = req.body; 
    let files = req.files; 
    fs.writeFileSync('audio/audiotest.webm', req.files); 
    console.log('form data', formData, 'file' , files); 
    res.sendStatus(200); 
}); 

HERESに私のコンソール出力

form data { tag: 'tag', } file { fieldname: 'source', 
    originalname: 'blob', 
    encoding: '7bit', 
    mimetype: 'audio/webm', 
    buffer: <Buffer 1a 45 df a3 9f 42 86 81 01 42 f7 81 01 42 f2 81 04 42 f3 81 08 42 82 84 77 65 62 6d 42 87 81 04 42 85 81 02 18 53 80 67 01 ff ff ff ff ff ff ff 15 49 ... >, 
    size: 14322 } 

答えて

0

ように私はそれを考え出しました。

Multerはリクエストオブジェクト(req.files)上のファイルの配列を作成 バッファにアクセスし、ファイルに書き込むために、あなたがこれを実行する必要があります。..

fs.writeFileSync( 'オーディオ/ audiotestの。 webm '、req.files [0] .buffer);

これが役に立ちます。

関連する問題