programing

[object Object] Nodejs로 저장된 Blob

muds 2023. 11. 2. 22:08
반응형

[object Object] Nodejs로 저장된 Blob

저는 HTML5로 마이크에서 오디오를 녹음한 후 저장할 서버로 보내고 싶습니다.그러나 현재 저장된 파일에는 다음과 같은 내용만 포함되어 있습니다.[object Object]

여기 제 코드의 일부분이 있습니다.

프론트엔드:

console.log(blob);
$http.post('/api/save_recording', blob)
  .success(function(new_recording) {
    console.log("success");
  })

로그 인쇄:

Blob {type: "audio/wav", size: 237612, slice: function}
success

백엔드:

exports.saveRecording = function(req, res) {
  console.log(req.body);

  fs.writeFile("temp/test.wav", req.body, function(err) {
    if(err) {
      console.log("err", err);
    } else {
      return res.json({'status': 'success'});
    }
  }) 
}

로그 인쇄:{ type: 'audio/wav', size: 786476 }

이것이 왜 작동하지 않는지, 그리고 어떻게 고쳐야 하는지 알려주시겠습니까?

드디어 일을 시작했어요.이것을 작동시키는 방법은 클라이언트에서 블롭을 인코딩하고 서버에서 해독하는 것입니다.

프론트엔드:

// converts blob to base64
var blobToBase64 = function(blob, cb) {
  var reader = new FileReader();
  reader.onload = function() {
    var dataUrl = reader.result;
    var base64 = dataUrl.split(',')[1];
    cb(base64);
  };
  reader.readAsDataURL(blob);
};

blobToBase64(blob, function(base64){ // encode
  var update = {'blob': base64};
  $http.post('/api/save_recording', update)
    .success(function(new_recording) {
      console.log("success");
    });
});    

백엔드:

exports.saveRecording = function(req, res) {
  var buf = new Buffer(req.body.blob, 'base64'); // decode
  fs.writeFile("temp/test.wav", buf, function(err) {
    if(err) {
      console.log("err", err);
    } else {
      return res.json({'status': 'success'});
    }
  }); 
};

언급URL : https://stackoverflow.com/questions/23986953/blob-saved-as-object-object-nodejs

반응형