如何使用 java 从 FTPS 服务器获取文件?
How to get files from FTPS server with java?
我正在尝试访问我在 ftps 服务器中创建的路径中的文件夹,但它 return 什么都没有,它正在连接但没有 return 任何东西,如果我将服务器配置更改为 ftp 它可以正常工作。我正在使用 FileZilla Server,其配置如上。
SSL/TLS
Flag true 启用 FTP over SSL/TLS 支持 (FTPS) 并允许显式 FTP over TLS 在 SSL/TLS 设置
我的用户配置是:
Flat "Force SSL for user login" 在 FireZilla 服务器的一般用户配置中是正确的。
服务器关于连接的日志正在收到一条消息,我不知道它是否有帮助:
227进入被动模式
列表
需要 521 PROT P
PASV
227进入被动模式
NLST
需要 521 PROT P
退出
我的连接示例 class 上面有所有权限:
public class FTPClientExample2
{
public static void main(String[] args)
{
String server = "myip";
int port = 2121;
String user = "joao";
String pass = "1234";
boolean error = false;
FTPSClient ftp = null;
try
{
ftp = new FTPSClient("SSL");
ftp.setAuthValue("SSL");
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
int reply;
ftp.connect(server, port);
System.out.println("Connected to ftp.wpmikz.com.cn");
System.out.print(ftp.getReplyString());
// After connection attempt, you should check the reply code to verify
// success.
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
ftp.login(user, pass);
// ... // transfer files
ftp.setBufferSize(1000);
ftp.enterLocalPassiveMode();
// ftp.setControlEncoding("GB2312");
ftp.changeWorkingDirectory("/");
ftp.changeWorkingDirectory("/ae"); //path where my files are
ftp.setFileType(FTP.BINARY_FILE_TYPE);
System.out.println("Remote system is " + ftp.getSystemName());
String[] tmp = ftp.listNames(); //returns null
System.out.println(tmp.length);
}
catch (IOException ex)
{
System.out.println("Oops! Something wrong happened");
ex.printStackTrace();
}
finally
{
// logs out and disconnects from server
try
{
if (ftp.isConnected())
{
ftp.logout();
ftp.disconnect();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
知道哪里出了问题吗?
谢谢大家!
登录后尝试执行
ftp.execPBSZ(0);
ftp.execPROT("P");
我正在尝试访问我在 ftps 服务器中创建的路径中的文件夹,但它 return 什么都没有,它正在连接但没有 return 任何东西,如果我将服务器配置更改为 ftp 它可以正常工作。我正在使用 FileZilla Server,其配置如上。
SSL/TLS
Flag true 启用 FTP over SSL/TLS 支持 (FTPS) 并允许显式 FTP over TLS 在 SSL/TLS 设置
我的用户配置是:
Flat "Force SSL for user login" 在 FireZilla 服务器的一般用户配置中是正确的。
服务器关于连接的日志正在收到一条消息,我不知道它是否有帮助:
227进入被动模式
列表
需要 521 PROT P
PASV
227进入被动模式
NLST
需要 521 PROT P
退出
我的连接示例 class 上面有所有权限:
public class FTPClientExample2 {
public static void main(String[] args)
{
String server = "myip";
int port = 2121;
String user = "joao";
String pass = "1234";
boolean error = false;
FTPSClient ftp = null;
try
{
ftp = new FTPSClient("SSL");
ftp.setAuthValue("SSL");
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
int reply;
ftp.connect(server, port);
System.out.println("Connected to ftp.wpmikz.com.cn");
System.out.print(ftp.getReplyString());
// After connection attempt, you should check the reply code to verify
// success.
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
ftp.login(user, pass);
// ... // transfer files
ftp.setBufferSize(1000);
ftp.enterLocalPassiveMode();
// ftp.setControlEncoding("GB2312");
ftp.changeWorkingDirectory("/");
ftp.changeWorkingDirectory("/ae"); //path where my files are
ftp.setFileType(FTP.BINARY_FILE_TYPE);
System.out.println("Remote system is " + ftp.getSystemName());
String[] tmp = ftp.listNames(); //returns null
System.out.println(tmp.length);
}
catch (IOException ex)
{
System.out.println("Oops! Something wrong happened");
ex.printStackTrace();
}
finally
{
// logs out and disconnects from server
try
{
if (ftp.isConnected())
{
ftp.logout();
ftp.disconnect();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
}
知道哪里出了问题吗?
谢谢大家!
登录后尝试执行
ftp.execPBSZ(0);
ftp.execPROT("P");