使用Apache Commons Net在ESP8266上列出文件时,“无法确定系统类型 - 响应:500 Unknow命令”

时间:2018-01-29 10:44:13

标签: java android ftp apache-commons-net

我尝试在ESP8266中连接到FTP服务器。连接成功,但我无法获取服务器上的文件列表。

我的代码是:

FTPClient mFtpClient = new FTPClient();
mFtpClient.setConnectTimeout(10000);
mFtpClient.connect(InetAddress.getByName(ip));
status = mFtpClient.login(userName, pass);
Log.e("isFTPConnected", String.valueOf(status));
if (FTPReply.isPositiveCompletion(mFtpClient.getReplyCode())) {
    mFtpClient.setFileType(FTP.BINARY_FILE_TYPE);
    mFtpClient.enterLocalPassiveMode();
    FTPFile[] mFileArray = mFtpClient.listFiles();
    Log.e("Size", String.valueOf(mFileArray.length));
}

逻辑上我收到错误:

  

java.io.IOException:无法确定系统类型 - 响应:500 Unknow命令。

我使用Apache Commons Net FTP库。那我的代码有什么问题?从FileZilla Windows客户端,我可以连接。可能是ESP中的原因是SPIFF文件系统?或另一个原因?

感谢您的回答和兴趣!

1 个答案:

答案 0 :(得分:2)

您的服务器不支持SYST命令,FTPClient需要决定如何解析LIST命令的响应。

解决方案是:

  • 如果您的服务器支持MLSD命令,请使用mlistDir代替listFiles
  • 或使用System.setProperty设置FTP_SYSTEM_TYPE_DEFAULTFTP_SYSTEM_TYPE以建议您的服务器使用的目录列表格式。