[英]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.