2013-06-27 58 views
1

我正在使用它來上傳一些文件。它適用於如果我在本地連接,但如果我使用外部連接,我從ftp服務器收到此消息:425 Can't open data connection.Android FTP錯誤 - 425無法打開數據連接

我使用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."; 
} 

調試顯示沒有例外。

回答

1

從互聯網:

首先 - 最常見的解決方案:改變主動/被動模式 設置。但是這可能不起作用,並且如果它只有一個包含真正問題的創可貼 。

正如我以前提到過,那 出現這種錯誤最常見的原因之一,是FTP服務器軟件 本身,涉及到SSL連接和防火牆,其中 連接嘗試建立的配置錯誤本身在一個虛假的IP地址。通過NAT防火牆瞭解更多關於FTP SSL的 ,這裏包括一些潛在的解決方案 。

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

  • 該服務器被配置爲始終使用被動模式連接的同一端口,或客戶端被配置爲總是使用 相同的端口爲活動模式連接,雖然在這種情況下 通常有問題的軟件應該首先提出一個不同的錯誤 ,但我已經看到了這種情況。
  • 在被動模式下,FTP服務器前面的防火牆沒有打開正確的端口。所以服務器告訴客戶端 連接到端口x上的ipaddress 1.2.3.4,但防火牆不允許 允許端口x上的傳入連接。大多數防火牆在智能 時都足以在它看到PASV響應時打開端口。副模式 對於主動模式和FTP客戶端前面的防火牆也是如此。

從我: 我用的andoird這個庫和它的工作好,所以看到我的複製/粘貼部分。

相關問題