我正在用它上传一些文件。如果我在本地连接中,它可以工作,但是如果使用外部连接,我会收到以下消息:从ftp服务器获取425 Can't open data connection.
。
我使用org.apache.commons.net.ftp.FTPClient和org.apache.commons.net.ftp.FTPFile库。
public static String gravaImagem(String photoFile) {
FTPClient mFtp = new FTPClient();
try {
mFtp.connect(FTPHOST, PORTA);
mFtp.login(USUARIO, SENHA);
mFtp.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
mFtp.setFileType(FTPClient.BINARY_FILE_TYPE);
String origem = Environment.getExternalStorageDirectory().getPath()+File.separator+"Pictures"+File.separator+"ImageSec"+File.separator+photoFile;
FileInputStream fis = new FileInputStream(origem);
mFtp.storeFile(photoFile, fis);
mFtp.logout();
mFtp.disconnect();
} catch (SocketException e) {
e.printStackTrace();
return "Fail. (ERR#CON3)";
} catch (IOException e) {
e.printStackTrace();
return "Fail. (ERR#CON4)";
}
return "Imagem enviada ao servidor.";
}
调试显示没有异常。
最佳答案
来自网络:
首先-最常见的解决方案:更改主动/被动模式
设置。但这可能行不通,如果只做一个创可贴
掩盖真正的问题。
正如我过去提到的,最常见的原因之一是
发生此错误是FTP服务器软件的配置错误
本身,与SSL连接和防火墙有关,其中
连接尝试在伪造的IP地址上建立自己。阅读更多
关于通过NAT防火墙通过FTP SSL的信息,一些潜在的解决方案
被包含在内。
还有其他不太可能的原因,例如:
服务器配置为始终使用相同的端口进行被动模式连接,或者客户端配置为始终使用
相同端口用于活动模式连接,尽管在这种情况下
通常,相关软件应引发其他错误
首先,但是我已经看到了这种情况。
在被动模式下,FTP服务器前面的防火墙没有打开正确的端口。所以服务器告诉客户端
在端口x上连接到ipaddress 1.2.3.4,但防火墙没有
允许端口x上的传入连接。大多数防火墙都是智能的
当看到PASV响应时,足以打开端口。副
反之亦然,活动模式和FTP客户端前的防火墙。
从我:
我在andoird上使用了这个库,并且运行良好,因此请参阅我的复制/粘贴部分。
关于android - Android FTP错误-425无法打开数据连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17351695/