Upload files to FTP Server in Java - Using Commons Net API

In today's discussion we will came across 'How to upload files to FTP server in Java'. We are using 'apache commons-net' API that holds all necessary classes to deal with FTP operations like, create connection , get list of all files on ftp , upload file to ftp , download files from ftp , create and delete a directory on ftp and delete a file on ftp.

In this particular blog we will see an example of How to upload files to FTP server in Java, all steps included in the process are:

1)  Get a 'FtpClient' object from 'org.apache.commons.net.ftp.FTPClient' Class.
2)  Use 'connect()'  method of API to open a connection to the FTP Server, pass ftp path or url as           parameter to connect() method.
3)  Call login() method of API on ftpClient, and pass server credentials as parameter. It returns 'true' if login is successful and false otherwise.
4)  Get FileInputStream object by reading file that needs to be uploaded.
5)  Call storeFile(String remote, InputStream local) method of API on ftpClient, and pass desired file name(name of uploaded file on server) as first argument and pass input stream of uploading file as second argument.
6)  Call logout() method of API on ftpClient to logout from connected ftp server. It returns 'true' if logout is successful and false otherwise.
7)  Call disconnect() method of API on ftpClient to end connection from connected ftp server. It returns 'true' if disconnect is successful and false otherwise.

Required Libraries to add

To use implementation of 'Commons Net' we need to add following dependency to our pom.xml. Here 'commons-net' is required dependency but 'commons-io' is optional. 'commons-io' provides a number of general purpose implementation to deal with IO.

Upload files to FTP Server in Java - Example Code

package com.beingjavaguys.testftp;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.net.SocketException;  
import org.apache.commons.net.ftp.FTPClient;  
public class UploadFile {  
 public static void main(String args[]) {  
  // get an ftpClient object  
  FTPClient ftpClient = new FTPClient();  
  FileInputStream inputStream = null;  
  try {  
   // pass directory path on server to connect  
   // pass username and password, returned true if authentication is  
   // successful  
   boolean login = ftpClient.login("username", "password");  
   if (login) {  
    System.out.println("Connection established...");  
    inputStream = new FileInputStream("files/fileToUpload.txt");  
    boolean uploaded = ftpClient.storeFile("uploadedFile.txt",  
    if (uploaded) {  
     System.out.println("File uploaded successfully !");  
    } else {  
     System.out.println("Error in uploading file !");  
    // logout the user, returned true if logout successfully  
    boolean logout = ftpClient.logout();  
    if (logout) {  
     System.out.println("Connection close...");  
   } else {  
    System.out.println("Connection fail...");  
  } catch (SocketException e) {  
  } catch (IOException e) {  
  } finally {  
   try {  
   } catch (IOException e) {  

Output : Here is expected output, connection started, file uploaded to server and connection ends.

Here we are done with 'Upload files to FTP Server in Java - Using Commons Net API'. In our upcoming blogs we will see more about Java Programming and other opensource technologies.