2017년 6월 23일 금요일

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"); 
         } 
      } 
}

--
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();
--

댓글 없음:

댓글 쓰기