从远程下载Mp3文件。Node js

8

我正在尝试使用node js从远程url下载mp3文件。为此,我使用了以下代码。但它不起作用(下载的文件只有0字节,下载后无法播放)。

var http = require('http');
var fs = require('fs');
var url = "http://play.publicradio.org/rivet/d/podcast/marketplace/segments/2015/09/28/mp_20150928_seg_01_64.mp3";
var dest = "2.mp3";
var file = fs.createWriteStream(dest);
var request = http.get(url, function(response) {
    console.log("res "+response);
    response.pipe(file);
    file.on('finish', function() {
        console.log("File download Completed");
    });
}).on('error', function(err) { // Handle errors

});

2
尝试访问 http://www.hacksparrow.com/using-node-js-to-download-files.html 了解如何使用Node.js下载文件。 - Chetan
我曾经遇到过类似的问题。你可以查看我是如何解决它的:http://stackoverflow.com/questions/29987847/how-to-download-an-xlsx-in-angular-from-express - Pio
@Chetan:同样的问题 - Kishore Indraganti
1个回答

16

这里的问题是http不遵循重定向。 您可以使用默认情况下执行此操作的request npm模块,以避免手动处理标头。

var fs = require('fs'),
  request = require('request');

request
  .get('http://foo.com/bar.mp3')
  .on('error', function(err) {
    // handle error
  })
  .pipe(fs.createWriteStream('2.mp3'));

我试图通过fs.writeFile()保存response,结果损坏了文件。你的答案简单明了,非常好。非常感谢! - Mr. B.
嗨,request npm 模块现已被弃用。 - TOPKAT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接