【发布时间】:2018-07-16 11:42:42
【问题描述】:
我想使用此代码从网上下载多个文件:
var fs = require('fs');
var http = require('http');
var request = require('request');
var file;
for(var i = 1; i <= 5; i++) {
//CHECK IF REMOTE FILE EXISTS
request('http://webaddress.com/filename' + i + '.jar', function (err, resp) {
//IF EXISTS DO
if (resp.statusCode == 200) {
//DOWNLOAD DATA AND CREATE A NEW .JAR FILE
file = fs.createWriteStream('D:\\filename' + i + '.jar');
http.get('http://webaddress.com/filename' + i + '.jar', function(response) {
response.pipe(file);
file.on('finish', function() {
file.close();
});
});
}
//FILE DOES NOT EXIST
});
}
我想要的结果是:用文件名filename1-5.jar下载了多个文件。我得到的结果只是一个文件名为 filename5.jar 的文件(或循环中 i var 的最后一个值)。我做错了什么?
【问题讨论】:
-
你的请求是异步的,它只会在你的循环完成后执行,因此文件名中的
5。 -
我怀疑是这样。谢谢。我该怎么做才能让它发挥作用?
-
看到这个答案,可以帮你解决问题stackoverflow.com/a/19911657/8221063
-
谢谢@LucasDuarte,我会去看看。
-
@lupu51nfactumN778,我已经为你添加了答案。
标签: javascript node.js