2017-01-02 8 views
0

У меня есть проблема с передачей файлов на FTP-сервер Windows из Unix/Mac/Linux env.Apache FTPS Client storeFile to windows Сервер FTPS от Unix/Linux/Max issue

, в то время как тот же самый код Java работает с windows pc. от * Nix/Mac передача работала только с этим команды на FTP сессии

set ftps:initial-prot 
set ftp:ssl-force true 
set ftp:ssl-protect-data true 
set ssl:verify-certificate no 

время на моем окна машины я не нуждаются в них - я предполагаю, что это относится к системной переменной.

Это мой Java-код

protected FTPClient getClient(DeliveryDetails details) { 
    return new FTPSClient(false); // the connection is Explicit 
} 

public void setClient(FTPClient client, DeliveryDetails details) throws Exception { 
    client.setConnectTimeout(10000); 
    client.setDefaultTimeout(1000 * 60 * 2); 
    client.setControlKeepAliveTimeout(300); 
    client.setDataTimeout(15000); 
    client.connect(ftpDetails.host, ftpDetails.port); 
    client.setBufferSize(1024 * 1024); 
    client.login(ftpDetails.username, ftpDetails.getSensitiveData()); 
    client.setControlEncoding("UTF-8"); 
    client.setFileType(FTP.BINARY_FILE_TYPE); 
    client.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE); 
    FTPSClient ftpsClient = (FTPSClient) client; 
    ftpsClient.execPBSZ(0); 
    ftpsClient.execPROT("P"); 
    // both with it and without it didnt work ftpsClient.setWantClientAuth(false); 
} 

public void saveToServer(FTPClient client, File fileName, InputStream stream){ 
    BufferedInputStream bis = new BufferedInputStream(stream); 
    boolean isSaved = client.storeFile(filename, bis); 
    client.logout(); 
} 

Что такое эквивалент этих параметров в классе FTPS Apache?

set ftps:initial-prot 
set ftp:ssl-force true 
set ftp:ssl-protect-data true 
set ssl:verify-certificate no 
+0

1) Что такое 'набор FTPS: начальный-prot' и тому другие? Это команды 'lftp'? Не заставляйте нас угадывать! Расскажи нам! 2) Что делает код на Mac и * nix? Расскажи нам! Точное сообщение об ошибке, файл журнала, что угодно! –

ответ

1

Похоже, что Windows NT не поддерживает запись данных в FTP.BLOCK_TRANSFER_MODE

Easy починка

private static final String WINDOWS_NT_SYTEM_TYPE = "Windows_NT"; 
    .... 
    .... 
    try { 
      String res = client.getSystemType(); 
      if (res.equals(WINDOWS_NT_SYTEM_TYPE)) { 
       client.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); 
      } else { 
       client.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE); 
      } 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^