如何使用nodejs下载并保存多个文件?

时间:2017-11-25 18:42:18

标签: javascript node.js

我需要在nodejs中编程才能获取另一个网站的列表文件并保存在我的机器中。

例如:

function saveLocalFiles(files) {
    for (var i in files) {
        var file = fs.createWriteStream(path.join(__dirname, "media/" + files[i].FILE));
        console.log(URL + files[i].FILE);
        http.get(URL + files[i].FILE, function (response) {
            response.pipe(file);
            file.on('finish', function () {
                file.close(() => {
                    console.log("ends ->" + files[i].FILE);
                });

            });
        })
    }
}

当我执行它时,我的代码不适用于多个文件。此外,我不知道它何时结束下载文件。有人能帮助我吗?。

谢谢。

1 个答案:

答案 0 :(得分:2)

使用Promises并尝试将代码拆分为两个函数:

function saveLocalFiles(files) {
    Promise
        .all(files.map(file => saveLocalFile((URL, file.FILE))))
        .then((files) => {
            console.log(files);
        })
 }

function saveLocalFile(URL, FILE) {
    return new Promise((resolve) => {
        var file = fs.createWriteStream(path.join(__dirname, "media/" + FILE));
        console.log(URL + FILE);
        http.get(URL + FILE, function (response) {
            response.pipe(file);
            file.on('finish', function () {
                file.close(() => {
                    console.log("ends ->" + FILE);
                    resolve(FILE);
                });
            });
        })
    })
}