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"); } } }
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.
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.
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With