Android FTP错误 - 425无法打开数据连接

时间:2013-06-27 19:31:35

标签: android ftp

我正在使用它上传一些文件。如果我在本地连接中,它可以工作,但如果我使用外部连接,我从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.";
}

Debug没有例外。

1 个答案:

答案 0 :(得分:1)

来自互联网:

  

首先 - 最常见的解决方案:更改主动/被动模式   设置。但这可能行不通,如果它只是一个创可贴   掩盖真正的问题。

     

正如我过去所提到的那样,最常见的原因之一   发生此错误是FTP服务器软件配置错误   本身,与SSL连接和防火墙有关,其中   连接尝试在伪造的IP地址上建立自己。阅读更多   关于通过NAT防火墙的FTP SSL,这里有一些潜在的解决方案   包括在内。

     

还有其他不太可能的原因,例如:

     
      
  • 服务器配置为始终使用相同的端口进行被动模式连接,或者客户端配置为始终使用   用于活动模式连接的相同端口,尽管在这种情况下   通常,相关软件应该引发不同的错误   首先,但我已经看到了这种情况。
  •   
  • 在被动模式下,FTP服务器前面的防火墙没有打开正确的端口。所以服务器告诉客户端   在端口x上连接到ipaddress 1.2.3.4,但防火墙没有   允许端口x上的传入连接。大多数防火墙都很智能   足以在看到PASV响应时打开端口。副   反之亦然,主动模式和FTP客户端前的防火墙。
  •   

来自我:  我已经在andoird上使用了这个库并且效果很好,所以请看我的复制/粘贴部分。