我有一个名为'images.txt'的文件,其中包含此类图片的网址
http://www.foobar.com/assets/foobar/abc.jpg
http://www.foobar.com/assets/foobar/xyz.jpg
http://www.foobar.com/assets/foobar/aaa.jpg
http://www.foobar.com/assets/foobar/bbb.jpg
http://www.foobar.com/assets/foobar/rrr.jpg
我正在尝试遍历文件并逐个下载图像,但出于某种原因,我只能下载最后一个图像rrr.jpg
,它只有0kb ..这是不正确的。
我使用的是以下nodejs代码。
var wget = require('node-wget'); fs = require('fs')
fs.readFile(__dirname + '\\images.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}else{
wget(data);
}
});
我安装了nodejs和wget,并且没有任何问题。
我使用过这个脚本
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(__dirname + '\\images.txt')
});
lineReader.on('line', function (line) {
wget(line);
});
它会下载所有图像,但它们似乎已损坏,因为无法打开或删除所有图像。即使nodejs完成了脚本运行,似乎有一些东西从nodejs打开但没有关闭
答案 0 :(得分:1)
看起来你没有逐行读取文件。试试这个实验:
// check.js
const fs = require('fs')
fs.readFile(__dirname + '/check.js', 'utf8', function(err, data) {
if (err) {
return console.warn(err)
} else {
console.log(`next line: ${data}`)
// wget(data);
}
})
(因为看起来你正在使用Windows,所以转过斜线)
你只会看到下一行'一次。
(我用脚本名称替换了文件名,我将其命名为check.js。您必须将check.js替换为脚本名称或图像列表名称。)
---重新更新---
也许这会奏效:
// check.js
const fs = require('fs')
fs.readFile(__dirname + '/check.js', 'utf8', function(err, data) {
if (err) {
return console.warn(err)
} else {
for (let line of data.split('\n')) { // might have to change to \r\n or something for windows
console.log(`next line: ${line}`)
// wget(data);
}
}
})
wget可能不喜欢你在前一个下载之前开始第二次下载