Java FTP Client is used to upload files to FTP server. Recently I was working in a web project where I had to upload a lot of images to the FTP server. Few days back, I wrote a program to resize image in java. My actual program was to resize all the images in a directory and then upload to FTP server using Apache Commons Net API.
Java FTP Client Example
Here I am providing a Java FTP client program to upload files to FTP server using Apache Commons Net API.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package com.journaldev.inheritance; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FTPUploader { FTPClient ftp = null; public FTPUploader(String host, String user, String pwd) throws Exception{ ftp = new FTPClient(); ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); int reply; ftp.connect(host); reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); throw new Exception("Exception in connecting to FTP Server"); } ftp.login(user, pwd); ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.enterLocalPassiveMode(); } public void uploadFile(String localFileFullName, String fileName, String hostDir) throws Exception { try(InputStream input = new FileInputStream(new File(localFileFullName))){ this.ftp.storeFile(hostDir + fileName, input); } } public void disconnect(){ if (this.ftp.isConnected()) { try { this.ftp.logout(); this.ftp.disconnect(); } catch (IOException f) { // do nothing as file is already saved to server } } } public static void main(String[] args) throws Exception { System.out.println("Start"); FTPUploader ftpUploader = new FTPUploader("ftp.journaldev.com", "ftpUser", "ftpPassword"); //FTP server path is relative. So if FTP account HOME directory is "/home/pankaj/public_html/" and you need to upload // files to "/home/pankaj/public_html/wp-content/uploads/image2/", you should pass directory parameter as "/wp-content/uploads/image2/" ftpUploader.uploadFile("D:\Pankaj\images\MyImage.png", "image.png", "/wp-content/uploads/image2/"); ftpUploader.disconnect(); System.out.println("Done"); } } |
You can use the above program to connect to an FTP server and then upload files to the server. Make sure you provide FTP Host, user, and password details correctly in the program. You can get these details when you create an FTP user.
The other important point to note is the server directory location. It’s relative to the FTP user home directory. Also, once you are done with uploading all the files, close the connection to the server and release resources.