Получить файлы из ftp и показать путь к папке с файлами в консоли - Node.js - PullRequest
1 голос
/ 17 марта 2020

Я новичок в node.js и пытаюсь получить файлы с FTP с помощью ftp module , а затем я хочу показать путь к папке с файлами в консоли. Когда я запускаю сервер с npm start, я получаю все файлы (это хорошо), но консоль возвращает пустой массив. Если я снова запускаю сервер с npm start, консоль показывает все пути (отлично), но не для новых файлов. Я пытался решить мою проблему с обратными вызовами и setTimeout безрезультатно: C

var Client = require('ftp');
var c = new Client();
var path = require('path');
var fs = require('fs');
var dir = path.join(__dirname, '../excelTime/');
var files = fs.readdirSync(dir);

const connectionProperties = {
  host: 'localhost',
  user: 'user_geek',
  port: '21'
}

Получить файлы с ftp

const getFilesFromFTP = () => {
  c.on('ready', function() {
    c.list('./', function(err, list) {
      if (err) throw err;
      for(var i = 0; i < list.length; i++) {
        (function(i) {
          const name = list[i].name;
          c.get('/' + name, function(err, stream) {
            if (err) console.dir(err);
            if(!err) {
              stream.once('close', function() { c.end();  });
              stream.pipe(fs.createWriteStream('./excelTime/' + name, {flags: 'w'}));
           }
          });
        }).call(this, i);
      }
      c.end();
    });
  });

  c.on('error', function(err) {
    console.log(err)
  });
  c.connect(connectionProperties);
}

Получить Путь к файлу

const checkFolder = () => {
  let promises = files.map(file => path.join(dir, file));
  Promise.all(promises).then(console.log);
}

Вызов

setTimeout(function() {
  checkFolder();
}, 3000);

getFilesFromFTP();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...