2017-12-19 19 views
0

오디오/웹 형식으로 녹음 된 MedaRecroder 스트림이 있습니다. 나는 이것을 노드 서버로 보냈습니다. 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);

희망이 도움이됩니다.