2

1つのamazonEC2インスタンスにftpサーバーをセットアップし、apacheftpライブラリを使用してローカルマシンのそのサーバーからファイルをダウンロードできます。現在、同じftpclientプログラムを別のAmazon EC2インスタンスで実行しようとしていますが、機能していません。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());

}

どちらのコードも私のローカルマシンでは正常に機能しますが、Amazonマシンでは機能しません。接続しますが、ファイル名やダウンロードファイルを一覧表示することはできません。また、エラーメッセージは表示されません。

前もって感謝します -

4

1 に答える 1

4

私はしばらく同じ問題を抱えていたので、私はちょうど可能な答えを見つけました。それは私に問題を解決しました。

次の行をコードに追加する必要があります:ftp.enterLocalPassiveMode();

connect()の後、login()の前。

リンクは次のとおりです:http: //bartling.blogspot.dk/2012/04/using-apache-commons-net-ftpclient-on.html

于 2012-09-14T12:07:17.793 に答える