Скачайте mp3 файл с URL с помощью xmlHttpRequest и запишите его в файл - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я пробовал все возможные способы сделать это, но я не могу заставить его работать, несмотря на то, что я читаю все связанные вопросы на inte rnet ...

Я просто пытаюсь скачать mp3 arrayBuffer, который я ПОЛУЧАЮ из URL с модулем xmlHttpRequest из моего кода сервера узла с намерением затем записать буфер в файл mp3, вот код:

const endpoint = "https://cdns-preview-a.dzcdn.net/stream/c-ae4124ee0e63b9f6abffddb36b9695cf-2.mp3";
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var oReq = new XMLHttpRequest();
oReq.open("GET", endpoint, true);
oReq.responseType = "arraybuffer";

oReq.onload = function (oEvent) {
    if (this.status != 200) {
        console.log(this.status)
    }
    console.log(oReq.response);
    var uInt8Array = new Uint8Array(oReq.response);
    console.log(uInt8Array);

    var dest = "1.mp3";
    var stream = fs.createWriteStream(dest);

    stream.write(uInt8Array);
    stream.end();
  }
};

oReq.send();

oReq.response всегда пуст , независимо от того, что я печатаю в oReq.responseType (arraybuffer, blob). если я попытаюсь написать oReq.responseText, это всегда будет некоторая потертая кодировка, потому что она была переведена в текст.

Не могли бы вы дать мне советы, есть ли какой-то глубокий глубокий слой, который я не понимаю? можно ли сделать то, что я хочу достичь?

1 Ответ

0 голосов
/ 18 апреля 2020

Нашел решение с http get вместо xmlHttpRequest:

const endpointe = "https://cdns-preview-a.dzcdn.net/stream/c-ae4124ee0e63b9f6abffddb36b9695cf-2.mp3";
https.get(endpointe, (res) => {
    datatest = []

    res.on('data', function(chunk) {
        datatest.push(chunk);
        console.log(chunk);
    });

    // The whole response has been received. Print out the result.
    res.on('end', () => {
        //console.log(data)
        var dest = "test.mp3";
        var stream = fs.createWriteStream(dest);
        var buffer = Buffer.concat(datatest);
        stream.write(buffer);
        stream.end();
    });

    }).on('error', (e) => {
    console.error(e);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...