Here’s a sample code on setting up FTPS file transfer in Java. Make sure you have setup SSLContext trusting the FTPS server’s certificate.
SSLContext sslContext = /* setup SSLContext */ FTPSClient ftps = new FTPSClient(true, sslContext); ftps.connect(hostname, port); // Timeout exception will be raised if no response received after 20s ftps.setDataTimeout(20000); // Authenticate ftps.user("ftp_user") ret = ftps.pass("ftp_pass"); // Define protection buffer size and protocol. Following are the default for implicit FTP (FTPS) ftps.parsePBSZ(0); ftps.execPROT("P"); // Set passive mode and file transfer type ftps.type(FTP.BINARY_FILE_TYPE); ftps.enterLocalPassiveMode(); // Remote path where file will be downloaded from ftps.changeWorkingDirectory("/remote/path"); // Retrieve a file called "file.txt" from remote server FileOutputStream local = new FileOutputStream("file.txt"); ftps.retrieveFile("file.txt", local);
This code uses commons-net package, make sure it is included in maven dependencies:
commons-net commons-net 3.3
The actual FTPS code will vary greatly depending on your FTPS server setup. The above assumes FTPS server is running in passive mode with normal username / password authentication.