我正在使用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");
我很难理解这两种情况之间的确切区别。有人可以解释一下问题是什么,以及如何修改代码以适应两种情况。