如何使用AWS FTP的主动和被动模式?

时间:2015-11-24 06:36:17

标签: ubuntu amazon-web-services amazon-s3 amazon-ec2 ftp

我正在使用AWS ubuntu实例作为FTP服务器,并通过以下链接完成所需的配置。

http://sdykman.com/content/installing-vsftpd-ubuntu-1404-amazon-ec2-instance

在我的java应用程序中,我使用Apache FTPClient连接FTP服务器。当我使用Windows操作系统从本地计算机上测试FTP服务器的文件下载时,没有 ftpClient.enterLocalPassiveMode();

所以我的代码如下面的Windows操作系统。

        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(server, port);
        ftpClient.login(user, pass);
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        InputStream inputStream = ftpClient.retrieveFileStream("\Sample.xls");

但是当我移植到另一个AWS实例并尝试下载该文件时,相同的应用程序无效。我必须在这里指定 ftpClient.enterLocalPassiveMode(); 。现在只有它正在运作。

        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(server, port);
        ftpClient.login(user, pass);
        ftpClient.enterLocalPassiveMode();
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        InputStream inputStream = ftpClient.retrieveFileStream("\Sample.xls");

我很难理解这两种情况之间的确切区别。有人可以解释一下问题是什么,以及如何修改代码以适应两种情况。

0 个答案:

没有答案