如何将文件上传到FTP服务器?

时间:2011-06-29 21:47:20

标签: java upload ftp download

我创建了一个从我有权访问的FTP服务器下载文件的功能。我如何将文件上传回FTP服务器?

以下是我使用的download_files方法:

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

4 个答案:

答案 0 :(得分:56)

使用FTPClient库中的Apache Commons Net类。

这是一个带有示例的片段:

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

摘自http://www.kodejava.org/examples/356.html

的摘录

答案 1 :(得分:3)

我使用了EDT FTP软件包,这是一个用于Java的免费GPL库:http://www.enterprisedt.com/products/edtftpj/overview.html

这是一个代码示例,来自他们提供的Demo.java类:

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

答案 2 :(得分:1)

同时查看FTP4J ...

答案 3 :(得分:0)

看看apache-commons-net他们有一些可以帮助你的FTP工具!