【问题标题】:Downloading multiple file from ftp site using node js使用节点 js 从 ftp 站点下载多个文件
【发布时间】:2016-01-15 05:59:09
【问题描述】:

我正在尝试从根文件夹下载 ftp 服务器上的每个文件。 我做的是这个-

ftpClient.ls(".", function(err, res) {
      res.forEach(function(file) {
          console.log(file.name);

            ftpClient.get("./"+file.name, 'D:/styleinc/ftp/'+file.name, function(hadErr) {
                if (hadErr)
                  console.log(hadErr);
                else
                  console.log('File copied successfully!');

      });
    });

但在运行时它给了我错误-

{ [Error: connect ECONNREFUSED]
   code: 'ECONNREFUSED',
   errno: 'ECONNREFUSED',
   syscall: 'connect',
   msg: 'Probably trying a PASV operation while one is in progress' 
  }

我已经在 ftp 网站上成功登录并验证了我自己..... 我不知道该怎么做,请指导我。

【问题讨论】:

  • 我正在尝试做一些几乎和你一模一样的事情。我认为问题是我们需要等待一项操作完成,然后再尝试另一项操作。我认为这里异步控制的一个很好的例子是here in the ftpsync 包。不过 ftpsync 只能用于上传 :(。他使用地图限制 1 来确保它首先完成。

标签: node.js ftp


【解决方案1】:

这是我与 async.mapLimit 一起使用的代码块,以使其仅与一个连接同时工作。

'use strict'

var JSFtp = require('jsftp');
var inspect = require('util').inspect;
var fs = require('fs');
var async = require('async');

var ftp = new JSFtp(require('./util/ftp'))
var local = 'EDI/mohawk/OUTBOX/'
var remote = 'OUTBOX'

var gatherFiles = function(dir){
  return new Promise(function(resolve, reject){
    ftp.ls(dir + '/*', function(err, res) {
      if (err) reject(err)
      console.log(res)
      var files = [];
      res.forEach(function(file){
        files.push(file.name)
      });
      resolve(files)
    })
  })
}

gatherFiles(remote).then(function(files){
  console.log(files)
  async.mapLimit(files, 1, function(file, callback){
    console.log('attempting: ' +remote + file + '->' + local + file)
    ftp.get(remote +'/'+ file, local +'/'+ file, function(err){
      if(err){
        console.log('Error getting ' + file)
        callback(err)
      }else{
        console.log('Got ' + file)
        callback()
      }

    })
  }, function(err, res){
    if(err){
      console.log(err)
    }
    console.log('updates complete' + res)   
  })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多