How to write .wav file from blob in Javascript/Node How to write .wav file from blob in Javascript/Node node.js node.js

How to write .wav file from blob in Javascript/Node


You can convert the Blob to a Typed Array and then to a Buffer for passing directly to fs.writeFileSync():

var fileReader = new FileReader();fileReader.onload = function() {  fs.writeFileSync('test.wav', Buffer.from(new Uint8Array(this.result)));};fileReader.readAsArrayBuffer($scope.recordedInput);


Using mscdex answer.

This is what worked for me when using NodeWebkit as browser.

var fileReader = new FileReader();fileReader.onload = function () {       fs.writeFileSync('test.wav', Buffer(new Uint8Array(this.result)));};fileReader.readAsArrayBuffer(blob);

Notice the "from" method of Buffer has disappear. And "blob" that is passed in my last line is audio data encoded in wav.
For the rest, its only magic. Don't ask me...


I had issues getting either of these to work for me. I found success, and much easier implementation with this node module express-fileupload. Here's some code:

var express = require('express');var fileUpload = require('express-fileupload');app.use(fileUpload());app.post('/', function(req, res) {  console.log(req.files.data);  req.files.data.mv('test.wav', function(err) {    if (err) {      console.log(err);    }  });});