【问题标题】:JSch SFTP file downloadJSch SFTP 文件下载
【发布时间】:2013-03-22 20:17:21
【问题描述】:

我正在尝试使用 JSch 将文件从 SFTP 服务器下载到我的本地计算机。无论文件大小如何,它只下载 16371 字节的数据并结束传输。它不会抛出任何异常。如果文件小于 16371 字节,则会成功传输,但对于任何较大的文件,传输都会导致文件损坏。

【问题讨论】:

  • 我想你需要在这里展示一些代码......
  • 我刚刚实例化了 ChannelSftp 对象并调用了 get 方法。它适用于较小的文件,但在传输 16371 字节后停止。
  • 你能把 JSch 对象的日志级别调高,看看有没有什么东西跳出来吗?
  • 感谢您的建议。我试过了,这些是 JSch 日志的最后几行:身份验证成功(键盘交互)。从 ..***.*** 端口 22 断开连接 捕获异常,由于套接字关闭而离开主循环
  • 看起来服务器正在断开您的连接。尝试调整 sshd 服务器端的日志,看看有什么要说的......

标签: java get sftp jsch


【解决方案1】:

实际上我设法解决了这个问题。我换了:

    SftpProgressMonitor monitor = new MySftpProgressMonitor();
    channelSftp.get(sourceFile, destFile, monitor);

与:

    channelSftp.get(sourceFile, destFile);

删除进度监视器后,传输成功。我猜这是 Jsch 内部的一个错误。

【讨论】:

    【解决方案2】:

    我在使用特殊的 sftp 服务器时遇到了同样的问题。我独特的解决方案是使用LFTP,这是一个用于自动化 SFTP 任务的 linux 命令。如果您有 Linux 环境,它非常有用。

    PHP 中的示例: $command = 设置网络:超时 30;液晶显示器 $directorioDestino; cd /Usr/companies/cdrusr357901/CallCenterRecords/; mget {$prefijoArchivosAuris}*;再见 lftp -u {$this->user},{$this->password} -e '$command' sftp://{$this->host}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多