繁体   English   中英

Java ftp4j-以amn活动模式连接时列出FTP服务器中的文件

[英]Java ftp4j - List files in FTP server when connecting in amn active mode

我正在使用ftp4j库实现我的FTP客户端,但是我尝试连接的服务器仅在活动模式下接受连接。

因此,当我尝试列出远程文件时,我得到了:

ERROR : Error in Connecting to Remote Machine... Hence exitting...
it.sauronsoftware.ftp4j.FTPException [code=501, message= Server cannot accept argument.]
at     it.sauronsoftware.ftp4j.FTPClient.openActiveDataTransferChannel(FTPClient.java:3600)
at it.sauronsoftware.ftp4j.FTPClient.openDataTransferChannel(FTPClient.java:3551)
at it.sauronsoftware.ftp4j.FTPClient.listNames(FTPClient.java:2335)
at com.npap.network.TranferFileFtp4j.listRemoteFilesFtp1(TranferFileFtp4j.java:999)

这是代码:

...
//connect to server method - in active mode!
ftpClient = Ftp4jUtility.connect1(SERVER_MACHINE, PORT, SERVER_USERNAME, SERVER_PASSWORD);

try {
    ftpClient.changeDirectory(config.getFtpRemoteFolderReports());    
    log.info("Changed directory to: " + config.getFtpRemoteFolderReports());
} catch (FTPException | FTPIllegalReplyException | IOException | IllegalStateException e) {
    e.printStackTrace();
}

String[] filesList = ftpClient.listNames();
    for(String f: filesList) {
        log.info("fetched file: " + f);
        tmpAllRemoteFiles.add(f);
}

在活动模式下连接时,有什么办法列出远程文件?

是的,您可以在活动模式下使用.listNames()

该问题可能是服务器无法连接回您的客户端以打开数据连接。 您必须从本地防火墙上的FTP数据连接范围打开端口(如果有),并在NAT上路由传入的连接(如果有)。

配置活动模式FTP很麻烦,很少使用。

了解(我的)有关FTP活动模式所需的网络配置的文章。

501错误代码来自FTP服务器(可能是IIS)。 如果您在Google上搜索“ 501服务器无法接受参数” ,则会发现很多类似的问题。

您的代码没有错。 这可能是网络配置问题,也可能是服务器端问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM