How do you upload a file to an FTP server?

Use the FTPClient Class from the Apache Commons Net library.

This is a snippet with an example:

FTPClient client = new FTPClient();
FileInputStream fis = null;

try {
    client.connect("ftp.domain.com");
    client.login("admin", "secret");

    //
    // Create an InputStream of the file to be uploaded
    //
    String filename = "Touch.dat";
    fis = new FileInputStream(filename);

    //
    // Store file to server
    //
    client.storeFile(filename, fis);
    client.logout();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (fis != null) {
            fis.close();
        }
        client.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Snippet taken from http://www.kodejava.org/examples/356.html


I have used the EDT FTP package, a free GPL library for FTP in Java: http://www.enterprisedt.com/products/edtftpj/overview.html

Here is a code sample, from the Demo.java class they provide:

ftp = new FTPClient();
ftp.setRemoteHost("hostname");

// connect
ftp.connect();

// login
ftp.login("user", "password");

// set up passive ASCII transfers
ftp.setConnectMode(FTPConnectMode.PASV);
ftp.setType(FTPTransferType.ASCII);

// get directory and print it to console            
String[] files = ftp.dir(".", true);
for (int i = 0; i < files.length; i++)
    log.debug(files[i]);

// copy file to server 
ftp.put("test.txt", "test.txt");

// copy file from server
ftp.get("test.txt" + ".copy", "test.txt");

// delete file from server
ftp.delete("test.txt");

// Shut down client                
ftp.quit();

Check out FTP4J as well...