使用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


 

目录
相关文章
|
13天前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
|
28天前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
19天前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
36 0
|
27天前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
|
2月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
1月前
|
安全 搜索推荐 数据挖掘
文件解析的终极工具:Apache Tika
文件解析的终极工具:Apache Tika
63 0
|
2月前
|
算法 API 数据安全/隐私保护
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
|
3月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
48 3
|
2月前
|
存储 C#
.NET使用CsvHelper快速读取和写入CSV文件
.NET使用CsvHelper快速读取和写入CSV文件
|
3月前
|
存储 安全 Unix
【.Net Core】深入理解IO之文件和目录
【.Net Core】深入理解IO之文件和目录
43 4

相关实验场景

更多

推荐镜像

更多