繁体   English   中英

使用 xmlHttpRequest 从 url 下载 mp3 文件并将其写入文件

[英]Download mp3 file from url with xmlHttpRequest and writing it to file

我目前已经尝试了所有可能的方法来做到这一点,但我无法让它发挥作用,尽管阅读了互联网上的每一个相关问题......

我只是想从我的节点服务器代码中下载一个我从 url 和模块 xmlHttpRequest 获取的 mp3 arrayBuffer,然后将缓冲区写入 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,它总是会出现一些磨损的编码,因为它被翻译成文本。

你能给我建议吗,是否有一些我不理解的底层,是否有可能做我想做的事情?

找到了使用 http 代替 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);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM