【问题标题】:ftps module connects but hangs upftps 模块连接但挂断
【发布时间】:2014-04-28 15:18:19
【问题描述】:

我正在使用ftps 模块,并且我已经在 Cygwin 上安装了 lftp。我遇到了麻烦,因为我的节点 js 应用程序看起来连接正常,但我的命令都没有运行。该模块的文档不是很详细,所以我一直在尽我所能让它运行。我想从 ftp 站点获取文件。

这是我的代码:

var ftps = require('ftps');

// ftps connection
var ftp = new ftps ({
    host: 'test.ftpsite.com',
    username: 'test',
    password: 'test',
    protocol: 'sftp'
});

// look at remote directory
console.log(ftp);
ftp.cd('TestDir/').get('/UploadTest.txt', '/cygdrive/c/Users/Administrator/UploadTest.txt').exec(console.log);

输出:

CMO-Application-Server>node app.js
{ options:
   { host: 'test.ftpsite.com',
     username: 'test',
     password: 'test' },
  cmds: [] }

在输出的这一点上,应用程序只是挂断了,就像它正在尝试运行命令一样。我已经让它运行了大约 10 分钟,但仍然没有。

【问题讨论】:

  • 如果您想从 ftp 站点获取文件,您需要使用 'ftp' 或 'ftps'(带有 SSL 的 FTP)作为协议,而不是 'sftp'(通过 SSH 传输文件)。此外,这个模块只是 lftp 命令行的包装,所以首先尝试使用命令行。
  • 我可以使用命令行来完成。我也尝试在模块中使用 ftp 和 ftps 并得到相同的结果。我的老板希望我现在用 python 来做,所以我改用它......

标签: javascript node.js ftp ftps


【解决方案1】:

对于 sftp,以下是使用 ssh2 模块的方法:

var Connection = require('ssh2');

var ssh = new Connection();
ssh.on('ready', function() {
  ssh.sftp(function(err, sftp) {
    if (err) throw err;
    sftp.fastGet('TestDir/UploadTest.txt',
                 '/cygdrive/c/Users/Administrator/UploadTest.txt',
                 function(err) {
      if (err) throw err;
      ssh.end();
    });
  });
}).connect({
  host: 'test.ftpsite.com',
  port: 22,
  username: 'test',
  password: 'test'
});

【讨论】:

  • ftps 是支持 SSL 的 FTP,sftp 是使用 SSH 进行文件传输 - 这些是完全不同的协议,但名称很相似。
  • 我的老板决定让我为此切换到 Python,所以我不需要 Node.js 来完成这部分项目。不过还是谢谢你。我之前尝试过使用 ssh2,但无法使用(周围没有太多文档)
  • @SteffenUllrich 对,我提出了这个解决方案,因为他在原始代码中明确使用了protocol: 'sftp'。 FWIW ftp node.js 模块同时处理 ftp 和 ftps。
猜你喜欢
  • 2019-03-06
  • 2019-03-23
  • 2018-03-25
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 2016-07-21
  • 1970-01-01
相关资源
最近更新 更多