使用apache commons-net包实现文件ftp上传

简介:

使用apache commons-net包实现文件ftp上传

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketTimeoutException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class FtpTool {

 private static FTPClient ftp;

 public static FTPClient ftp_conn(String server, String user, String password) {

  ftp = new FTPClient();
  // ftp.setDefaultTimeout(5000);
  try {
   int reply;

   ftp.connect(server);
   // ftp.connect(server,21,InetAddress.getLocalHost(),21);
   System.out.println("Connected to " + server + ".");
   System.out.println(ftp.getReplyString());


   reply = ftp.getReplyCode();

   if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    System.out.println("FTP server refused connection.");
    return null;
   } else {
    ftp.login(user, password);
    System.out.println("Login success.");
    ftp.pasv();
    ftp.enterLocalPassiveMode();
   }
  } catch (SocketTimeoutException ste) {
   ste.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return ftp;
 }

 /**
  * @param ftp
  * @param remoteFile
  * @param localFile
  * @return
  * @throws FileNotFoundException
  */
 public static boolean uploadToFtp(FTPClient ftp, String remoteFile,
   String localFile) throws FileNotFoundException {

  boolean result = false;
  if (ftp == null) {
   return result;
  }

  String dir = "/";
  remoteFile = remoteFile.replaceAll("\\\\", "/");
  if (remoteFile.indexOf("/") != -1) {
   dir = (String) remoteFile.subSequence(0, remoteFile.lastIndexOf("/"));
  }

  FileInputStream fis = new FileInputStream(new File(localFile));

  System.out.println("Upload " + localFile + " To " + remoteFile);
  try {
   ftp.makeDirectory(dir);
   ftp.changeWorkingDirectory(dir);
   ftp.setFileType(FTP.BINARY_FILE_TYPE); // 以BINARY格式传送文件
   if (ftp.storeFile(remoteFile, fis)) {
    result = true;
   }
   // System.out.println(ftp.getReplyCode());
   fis.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

  return result;
 }
 
 public static void logout(FTPClient ftp) {
  try {
   if (ftp != null) {
    ftp.logout();
    ftp.disconnect();
   }
   ftp = null;
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}


测试代码;


import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

 

public class FtpTest {

 /**
  * @param args
  */
 public static void main(String[] args) {

 
  String ftp_server = "192.168.0.1";
  String ftp_user = "username";
  String ftp_password ="password";
  FTPClient ftp = FtpTool.ftp_conn(ftp_server, ftp_user, ftp_password);
  
  String localFilename="D:\\html\\test.html";
  
  String remoteFilename="/mytest/002/test.html";
  
  
     System.out.println("upload ...");
     System.out.println(localFilename + " to " + remoteFilename);
     try {
      FtpTool.uploadToFtp(ftp, remoteFilename, localFilename);
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
    
  try {
   ftp.logout();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  if (ftp.isConnected()) {
   try {
    ftp.disconnect();
   } catch (IOException ioe) {
    ioe.printStackTrace();
   }
  }
  
  

 }

}


相关jar包: apache commons-net-1.4.1.jar


 

目录
相关文章
|
2月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
150 3
|
3月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
132 0
|
8月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
219 20
|
9月前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
223 12
|
11月前
|
开发框架 .NET 测试技术
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
本文介绍了 `.NET 9` 中新推出的 `Microsoft.AspNetCore.OpenApi` 包,该包旨在为 `ASP.NET Core` 应用程序生成 `OpenAPI` 文档。文章对比了 `NSwag` 和 `Swashbuckle.AspNetCore` 两大现有库,探讨了新包的优势和不足,特别是在性能和功能方面。尽管新包在某些方面尚不及成熟库完善,但其对原生 `AoT` 编译的支持和未来的扩展潜力使其成为一个值得考虑的选择。文章还提供了详细的性能测试数据和优化建议,适合对 `OpenAPI` 文档生成感兴趣的开发者阅读。
555 6
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
|
10月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
506 1
|
11月前
|
网络安全 Windows
Jetson 学习笔记(十五):FTP协议传输文件
本文介绍了如何使用WinSCP软件通过FTP协议在Windows和Jetson设备之间传输文件,并分享了一些操作经验和技巧。
159 0
Jetson 学习笔记(十五):FTP协议传输文件
|
10月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
102 0
|
12月前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
134 6
|
11月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器

推荐镜像

更多