user2526311
user2526311

Reputation: 1004

Changing ftp upload location

So I'm uploading a file to my VPS (Linux Centos 5 64 bit) via FTP using Java. The code I'm using to upload to my VPS is

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

    try {
        client.connect(serverip);
        client.login("user, pass);
        client.setFileType(FTPClient.BINARY_FILE_TYPE);

//  Create an InputStream of the file to be uploaded
        String filename = Shared.saveLocation + Shared.saveAs;
        fis = new FileInputStream(filename);

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

Now the code is working but what I want is to change where on the VPS it uploads the file to. Right now it's

serverip/HERE

I have some files so want to change it to

serverip/file/HERE

How can I go about doing so?

Upvotes: 0

Views: 1995

Answers (1)

djf
djf

Reputation: 6757

You can use the changeCurrentWorkingDirectory() method to change to the desired directory. Once you're in there, you can write the file using storeFile just like before.

changeCurrentWorkingDirectory returns true if the directory change was successful, otherwise it returns false. It takes a string which interpreted as the directory path. If the path starts with a slash, it's interpreted as absolute path starting at the ftproot directory. Otherwise it's interpreted as relative path.

Revised code could look something like this:

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

try 
{
    client.connect(serverip);
    client.login("user, pass);
    client.setFileType(FTPClient.BINARY_FILE_TYPE);

    // change directory to serverip/file/
    if (client.changeWorkingDirectory("/file"))
    {       
        // Create an InputStream of the file to be uploaded
        String filename = Shared.saveLocation + Shared.saveAs;
        fis = new FileInputStream(filename);

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

Upvotes: 2

Related Questions