`
angelbill3
  • 浏览: 255623 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

【学习】Java实现FTP上传功能(FTPClient)

    博客分类:
  • java
 
阅读更多
做项目时遇到的需求如下:本地查询的结果,导出XLS,上传至FTP。

---------------------
1、本地搭建FTP服务器用来测试
2、编写JAVA程序实现FTP上传

---------------------

具体如下:

1、本地搭建FTP服务器用来测试
服务端FTP的建立选用了【Serv-U】程序,很小,20M的样子,简洁好用,网上教程一堆,搭建的FTP地址:127.0.0.1,端口21,用户名test,密码test。

FTP客户端工具很多,如:FlashFXP、cuteftppro等

2、编写JAVA程序实现FTP上传
网上找了下资料,发现apache的FTPClient封装的很好,对于简单的FTP上传,直接拿来用就行。

引入包:commons-net-3.1.jar

代码如下:

2.1 FTP上传工具类
import java.io.IOException;
import java.io.InputStream;

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

public class FtpUtil {
	/** 
	 * Description: 向FTP服务器上传文件 
	 * @param url FTP服务器hostname 
	 * @param port FTP服务器端口 
	 * @param username FTP登录账号 
	 * @param password FTP登录密码 
	 * @param path FTP服务器保存目录 
	 * @param filename 上传到FTP服务器上的文件名 
	 * @param input 输入流 
	 * @return 成功返回true,否则返回false 
	 */  
	public static boolean uploadFile(String url,int port,String username, String password, 
			String path, String filename, InputStream input) {  
	    boolean success = false;  
	    FTPClient ftp = new FTPClient();  
	    try {  
	        int reply;  
	        ftp.connect(url, port);//连接FTP服务器  
	        //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器  
	        ftp.login(username, password);//登录  
	        reply = ftp.getReplyCode();  
	        if (!FTPReply.isPositiveCompletion(reply)) {  
	            ftp.disconnect();  
	            return success;  
	        }  
	        //设置上传目录 
	        ftp.changeWorkingDirectory(path); 
	        ftp.setBufferSize(1024); 
	        ftp.setControlEncoding("GBK"); 
            //设置文件类型(二进制) 
	        ftp.setFileType(FTPClient.BINARY_FILE_TYPE); 
	        ftp.storeFile(filename, input);           
	          
	        input.close();  
	        ftp.logout();  
	        success = true;  
	    } catch (IOException e) {  
	        e.printStackTrace();  
	    } finally {  
	        if (ftp.isConnected()) {  
	            try {  
	                ftp.disconnect();  
	            } catch (IOException ioe) {  
	            }  
	        }  
	    }  
	    return success;  
	}
}



2.2 测试方法
public void testUpload(){
    try {  
        FileInputStream in=new FileInputStream(new File("D:/test.xlsx"));  
        boolean flag = uploadFile("127.0.0.1", 21, "test", "test", "/", "test.xlsx", in);  
        if(flag){
	        log.info("上传成功!文件路径:" + filepath + filename);
	} else{
	        log.info("上传失败!");
	}
    } catch (FileNotFoundException e) {  
        e.printStackTrace();  
    }  
}



使用过程中,遇到的问题如下:

在本地的D:/test.xlsx是能打开的,但上传到FTP后,文件却打不开了。
原因:因为一开始在FTP工具类中没有设置编码,导致乱码,文件打不开,具体的代码设置请看2.1中的33-39行。(ftp.setControlEncoding("GBK"); )


-------------------------------------

文件下载没有做,具体参考文档:
http://blog.csdn.net/haidage/article/details/6859716

官方参考文档:
http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html
分享到:
评论

相关推荐

    调用FtpClient类上传文件(java)

    本主题将深入探讨如何使用`FtpClient`类从Apache Commons Net库来实现文件上传功能。Apache Commons Net提供了丰富的FTP操作接口,使得开发者能够方便地执行包括上传、下载、删除等在内的各种FTP操作。 首先,我们...

    java ftp 下载 源程序 FTPClient

    Java FTP下载源程序是用于通过FTP(File Transfer Protocol,文件传输协议)在Java应用程序中实现文件上传和下载功能的关键技术。FTPClient是一个流行的Java库,它提供了与FTP服务器交互的接口,使得开发者能够轻松...

    java利用FTPClient实现上传下载文件.doc

    Java 中使用 FTPClient 实现上传下载文件是 Java 程序中经常需要和 FTP 打交道的重要内容。FTPClient 是 Jakarta Commons 中的一个工具类,位于 Commons Net 包中。FTPClient 提供了上传、下载、删除、创建目录等...

    java实现ftp自动上传文件

    Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步或者日志传输等场景中。本文将深入探讨如何使用Java编程语言来构建一个FTP文件上传系统,同时结合Log4j日志框架和命令行信息的处理。 首先...

    Java实现FTP上传与下载

    这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...

    JAVA实现ftp上传,下载

    在Java中实现FTP上传,首先需要创建FTPClient对象,然后连接到FTP服务器,登录后设置工作目录。将要上传的文件转换为二进制流,并调用`storeFile()`方法。注意处理异常和确保文件传输完成后关闭流。 四、FTP下载 ...

    java实现ftp上传jar包

    以上就是关于"java实现ftp上传jar包"的相关知识点,涵盖了FTP协议、相关库的使用、JAR文件的处理以及基本的Java FTP操作。在实际项目中,你可能还需要考虑其他因素,如连接超时、重试策略、文件权限管理等。

    JAVA 实现 FTP 客户端功能

    在Java中实现FTP客户端功能,可以让你的程序与FTP服务器交互,执行上传、下载、删除等操作。下面将详细介绍如何使用Java来实现FTP客户端功能,并提供相关的知识点。 1. **Java FTP API**: Java标准库提供了一个名为...

    javaftp.rar_FTPClient java_ftpclient_javaftp client_swing上传下载_上传

    总的来说,“javaftp.rar”项目是一个用Java Swing和FTPClient实现的FTP客户端应用,提供了基本的文件和文件夹管理功能。对于学习FTP客户端开发的初学者来说,这是一个很好的实践案例,可以帮助理解如何将GUI与网络...

    java大文件上传至ftp服务器带进度条显示的

    这个场景中,我们关注的重点是如何在上传过程中显示进度条,并确保该进度条与FTP上传的速度同步,以提供用户友好的交互体验。 在Java中,我们可以使用`java.net`或`org.apache.commons.net`库来实现FTP文件上传。...

    Java实现FTP文件上传和下载

    以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...

    用JAVA实现Ftp文件上传下载

    在`TestFtpUpload`文件中,可以编写单元测试或集成测试来验证FTP上传和下载功能。例如,你可以创建一个测试类`FtpOperationsTest`,包含如下方法: ```java import org.junit.jupiter.api.Test; import org.apache....

    使用FTPClient实现ftp文件上传

    在本文中,我们将深入探讨如何使用FTPClient来实现FTP文件上传,特别是处理中文文件名的上传问题。 FTP是一种广泛使用的互联网协议,允许用户在两台计算机之间传输文件。在Java中,我们可以利用Apache Commons Net...

    java实现文件上传到ftp

    本教程将详细介绍如何使用Java实现文件上传到FTP服务器,这适用于初学者熟悉FTP客户端编程的基础概念。 首先,我们要了解FTP的基本工作原理。FTP允许客户端连接到服务器,发送文件,接收文件,或者列出服务器上的...

    Java实现ftp上传

    本文将详细介绍如何使用Java实现FTP上传功能,并探讨相关知识点。 首先,要进行FTP操作,我们需要一个Java FTP客户端库。Java标准库并不直接支持FTP,但提供了`java.net.Socket`类,可以通过它构建低级别的FTP连接...

    Java实现FTP批量大文件上传下载.pdf

    Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...

    java实现ftp上传下载

    Java实现FTP上传下载是Java开发中常见的任务,主要用于在服务器和客户端之间传输文件。FTP(File Transfer Protocol)是一种用于在Internet上进行文件传输的标准协议。本篇将详细讲解如何使用Java来实现FTP的上传和...

    java实现ftp断点续传

    Java实现FTP断点续传是一项在开发中常遇到的需求,主要应用于大文件传输或网络不稳定时确保文件完整传输。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而断点续传则是FTP的一个重要特性,允许...

    java实现的ftp文件上传

    Java作为多平台支持的编程语言,提供了丰富的库和API来实现FTP文件上传功能。本篇文章将详细探讨如何使用Java实现FTP文件上传,以及相关类的作用。 首先,我们来看标题和描述中的关键词"java实现的ftp文件上传",这...

    使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)

    在本文中,我们将深入探讨如何使用Apache Commons Net库和Java内置的`sun.net.ftp.FtpClient`来实现FTP(文件传输协议)的功能,包括上传、下载、批量操作以及删除文件。这两个库提供了丰富的API,使得在Java应用...

Global site tag (gtag.js) - Google Analytics