2017-11-25 95 views
0

我需要在nodejs中进行编程,该编程将另一个网站的列表文件保存在我的机器中。如何使用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); 
 
       }); 
 

 
      }); 
 
     }) 
 
    } 
 
}

当我执行它我的代码不会有一些文件工作

。另外,我无法知道它何时结束以下载文件。有人能帮助我吗?

谢谢。

回答

2

使用的承诺,并尝试在两个功能拆分代码:

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); 
       }); 
      }); 
     }) 
    }) 
} 
+0

这是为我工作。谢谢 – Antablack

+0

@ Antablack的欢迎兄弟;) –

相关问题