У меня проблемы с обслуживанием двоичных данных с узла. Я работал над модулем узла под названием node-говорящий , который выполняет TTS (преобразование текста в речь) и возвращает аудиофайл в кодировке base64.
Пока что я делаю это, чтобы преобразовать base64
в буфер / двоичный файл и затем обработать его:
// var src = Base64 data
var binAudio = new Buffer(src.replace("data:audio/x-wav;",""), 'base64');
Теперь я пытаюсь передать этот звук из узла с заголовками следующим образом:
res.writeHead(200, {
'Content-Type': 'audio/x-wav',
'Content-Length': binAudio.length
});
И подавать это так:
res.end(binAudio, "binary");
Но это не работает вообще. Есть ли что-то, что я не совсем понял, или я делаю что-то не так, потому что это не обслуживает действительный файл audio/x-wav
.
Примечание : данные Base64 действительны, я могу обработать их следующим образом [см. Ниже], и они отлично работают:
// assume proper headers sent and "src" = base64 data
res.end("<!DOCTYPE html><html><body><audio src=\"" + src + "\"/></body></html>");
Так почему я не могу обслуживать двоичный файл, что я делаю не так?