Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you upload a file to an FTP server?

I created a function to download files from an FTP server that I have access to. How would I upload files back to the FTP server?

Below is the download_files method i used:

public static void download_files(String un, String pw, String ip, String dir, String fn, String fp){      URLConnection con;     BufferedInputStream in = null;     FileOutputStream out = null;      try{         URL url = new URL("ftp://"+un+":"+pw+"@"+ip+"/"+dir+"/"+fn+";type=i");         con = url.openConnection();         in = new BufferedInputStream(con.getInputStream());         out = new FileOutputStream(fp+fn);          int i = 0;         byte[] bytesIn = new byte[1024];          while ((i = in.read(bytesIn)) >= 0) {             out.write(bytesIn, 0, i);         }      }catch(Exception e){         System.out.print(e);         e.printStackTrace();         System.out.println("Error while FTP'ing "+fn);     }finally{         try{             out.close();             in.close();         }catch(IOException e){             e.printStackTrace();             System.out.println("Error while closing FTP connection");         }     } } 
like image 646
Mike Avatar asked Jun 29 '11 21:06

Mike


People also ask

How do you send files to an FTP address?

To do this, open a Windows' File Explorer window and type ftp://[server name] or ftp://X.X.X.X where 'X' symbolizes the IP address of the FTP server, e.g. the IP address of your cRIO controller. You can then copy and paste files to or from the server like you would do with any normal folder on your storage as well.

How do I upload a file to a server?

Right-click the folder and select “Upload other file here. . .“. Browse the server for the file you want to upload. Select the file and click Open. Now, you will see the file in the folder location on the server.


2 Answers

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

like image 113
Marcelo Avatar answered Oct 08 '22 00:10

Marcelo


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(); 
like image 24
Steven Avatar answered Oct 08 '22 00:10

Steven