2017-11-25 11 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の歓迎仲間;) –

関連する問題