【问题标题】:Unable to download image from a text file with nodejs无法使用nodejs从文本文件下载图像
【发布时间】:2018-01-09 20:45:21
【问题描述】:

我有一个名为“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 = 要求('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 似乎有一些东西打开但没有关闭

【问题讨论】:

  • 您可以下载单个图像吗? wget('http://www.foobar.com/assets/foobar/abc.jpg')
  • 是的,我刚刚试了一下,效果很好..

标签: node.js


【解决方案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 可能不喜欢在前一个下载完成之前开始第二次下载

【讨论】:

  • stackoverflow.com/questions/6156501/… 展示了我认为如何逐行阅读
  • 我只看到了一个“下一行”,但来自 Alex 的链接似乎可以完成这项工作。出于某种原因,nodejs 下载了所有文件而不是一个一个地下载......所有这些文件都还没有完成,但大小正在改变......这是大图 5mb+
  • 嗯...似乎还有另一个问题。 txt文件有150张图片,现在nodejs已经下载了150张图片但是打不开也打不开……脚本运行无误,但是文件不是打不开的。
  • @hidar 你有解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 2016-11-20
相关资源
最近更新 更多