Uploading to FTP using Java

后端 未结 3 1470
死守一世寂寞
死守一世寂寞 2020-12-13 22:30

I was just wondering if there was a simple way I could upload a small file to a ftp server. I\'ve checked out Apache Commons Net library but that seems quit

相关标签:
3条回答
  • 2020-12-13 22:50

    The Apache commons lib has this utility org.apache.commons.net.ftp.FTPClient:

    http://commons.apache.org/

    import org.apache.commons.net.ftp.FTPClient;
    
    FTPClient client = new FTPClient();
    String sFTP = "ftp.miservidor.com";
    String sUser = "usuario";
    String sPassword = "password";
             
    try {
        client.connect(sFTP);
        boolean login = client.login(sUser, sPassword);
    } catch (IOException ioe) {}
    

    Full example: http://commons.apache.org/proper/commons-net/examples/ftp/FTPClientExample.java

    0 讨论(0)
  • 2020-12-13 22:58

    From this link: Upload files to FTP server using URLConnection class. No external library necessary.

    String ftpUrl = "ftp://%s:%s@%s/%s;type=i";
    String host = "www.myserver.com";
    String user = "tom";
    String pass = "secret";
    String filePath = "E:/Work/Project.zip";
    String uploadPath = "/MyProjects/archive/Project.zip";
    
    ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath);
    System.out.println("Upload URL: " + ftpUrl);
    
    try {
        URL url = new URL(ftpUrl);
        URLConnection conn = url.openConnection();
        OutputStream outputStream = conn.getOutputStream();
        FileInputStream inputStream = new FileInputStream(filePath);
    
        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
    
        inputStream.close();
        outputStream.close();
    
        System.out.println("File uploaded");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    
    0 讨论(0)
  • 2020-12-13 22:58

    I think, I've found a pretty nice sample of using org.apache.commons.net.ftp.FTPClient here

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import org.apache.commons.net.ftp.FTP;
    import org.apache.commons.net.ftp.FTPClient;
    
    /**
     * A program that demonstrates how to upload files from local computer
     * to a remote FTP server using Apache Commons Net API.
     * @author www.codejava.net
     */
    public class FTPUploadFileDemo {
    
        public static void main(String[] args) {
            String server = "www.myserver.com";
            int port = 21;
            String user = "user";
            String pass = "pass";
    
            FTPClient ftpClient = new FTPClient();
            try {
    
                ftpClient.connect(server, port);
                ftpClient.login(user, pass);
                ftpClient.enterLocalPassiveMode();
    
                ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    
                // APPROACH #1: uploads first file using an InputStream
                File firstLocalFile = new File("D:/Test/Projects.zip");
    
                String firstRemoteFile = "Projects.zip";
                InputStream inputStream = new FileInputStream(firstLocalFile);
    
                System.out.println("Start uploading first file");
                boolean done = ftpClient.storeFile(firstRemoteFile, inputStream);
                inputStream.close();
                if (done) {
                    System.out.println("The first file is uploaded successfully.");
                }
    
                // APPROACH #2: uploads second file using an OutputStream
                File secondLocalFile = new File("E:/Test/Report.doc");
                String secondRemoteFile = "test/Report.doc";
                inputStream = new FileInputStream(secondLocalFile);
    
                System.out.println("Start uploading second file");
                OutputStream outputStream = ftpClient.storeFileStream(secondRemoteFile);
                byte[] bytesIn = new byte[4096];
                int read = 0;
    
                while ((read = inputStream.read(bytesIn)) != -1) {
                    outputStream.write(bytesIn, 0, read);
                }
                inputStream.close();
                outputStream.close();
    
                boolean completed = ftpClient.completePendingCommand();
                if (completed) {
                    System.out.println("The second file is uploaded successfully.");
                }
    
            } catch (IOException ex) {
                System.out.println("Error: " + ex.getMessage());
                ex.printStackTrace();
            } finally {
                try {
                    if (ftpClient.isConnected()) {
                        ftpClient.logout();
                        ftpClient.disconnect();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题