如何使用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
相关产品推荐
相关产品推荐

