2017-11-25 94 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的歡迎兄弟;) –

相關問題