【问题标题】:How to download file from one Amazon EC2 instance to another EC2 instance using java apache FTPClient如何使用 java apache FTPClient 将文件从一个 Amazon EC2 实例下载到另一个 EC2 实例
【发布时间】:2012-08-07 08:46:18
【问题描述】:

我已经在一个亚马逊 EC2 实例中设置了一个 ftp 服务器,并且可以使用 apache ftp 库在我的本地机器上从该服务器下载文件。现在我试图在另一个 Amazon EC2 实例中运行相同的 ftpclient 程序,但它不工作。 以下是从 ftpsever 下载文件的示例代码:

FTPClient ftp = new FTPClient();
String loc = "/home/ubuntu/test/";
String remote = "/home/ftp";
try
{
  ftp.connect("ec2-xx-xx-xx-xxx.compute-1.amazonaws.com", 21);
  ftp.login("username", "xxx");
  System.out.println("connected..");
  ftp.setFileType(FTP.BINARY_FILE_TYPE);

  OutputStream output;
  output = new FileOutputStream(loc+"file_name");
  ftp.retrieveFile(remote+"/filen_name", output);
  output.close();
  ftp.disconnect();
}
catch(Exception ex)
{
   ex.printStackTrace();
}

以下代码可以列出远程目录的所有文件名:

for(FTPFile f: ftp.listFiles(remote))
{
  System.out.println(f.getName());

}

这两个代码在我的本地机器上都可以正常工作,但在亚马逊机器上却不行。它连接但无法列出文件名或下载文件。而且它没有显示任何错误信息。

提前致谢--

【问题讨论】:

  • 您是否尝试切换到passive 模式?
  • 是的,我试过了,但它不起作用。

标签: java ftp amazon-ec2 ftp-client apache-commons-net


【解决方案1】:

我刚刚找到了一个可能的答案,因为我已经有一段时间遇到同样的问题了。 它解决了我的问题。

您必须将此行添加到您的代码中: ftp.enterLocalPassiveMode();

connect() 之后和 login() 之前。

这里是链接: http://bartling.blogspot.dk/2012/04/using-apache-commons-net-ftpclient-on.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多