You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Apache Commons Net将文件上传至FTP服务器指定目录

如何将文件上传至FTP服务器的指定目录

要将文件上传到FTP服务器的指定目录,你需要在登录成功后切换到目标目录(如果目录不存在则先创建),再执行文件上传操作,具体修改如下:

关键步骤说明

  • 使用FTPClient的changeWorkingDirectory(String pathname)方法切换到目标目录
  • 如果目标目录不存在,可调用makeDirectory(String pathname)创建(若需创建多级目录,需循环逐级创建)
  • 切换目录成功后,再调用storeFile即可将文件上传到当前目录

修改后的完整代码

FTPClient client = new FTPClient();
String filename = "out.txt";
// 指定目标目录,比如"/uploads"
String targetDir = "/uploads";

// 从resources文件夹读取文件
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream is = classLoader.getResourceAsStream(filename);

try {
    client.connect("18.14.18.17");
    boolean login = client.login("root", "root");
    if (login) {
        System.out.println("Login success...");

        // 切换到目标目录,若目录不存在则创建
        if (!client.changeWorkingDirectory(targetDir)) {
            System.out.println("目标目录不存在,正在创建...");
            boolean dirCreated = client.makeDirectory(targetDir);
            if (dirCreated) {
                System.out.println("目录创建成功,切换到目标目录");
                client.changeWorkingDirectory(targetDir);
            } else {
                System.out.println("目录创建失败");
                // 可根据需求添加错误处理逻辑
                client.logout();
                return;
            }
        }

        // 上传文件到当前目录(即指定的目标目录)
        client.storeFile(filename, is);

        client.logout();
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (is != null) {
            is.close();
        }
        if (client.isConnected()) {
            client.disconnect();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

补充说明

  • 若需要创建多级目录(比如"/data/files/uploads"),makeDirectory只能创建单级目录,此时需要拆分路径逐级创建
  • 确保FTP账号拥有目标目录的读写权限,否则会切换或创建失败

内容的提问来源于stack exchange,提问作者Pouria Saleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:48:51