`

JAVA技术实现上传下载文件到FTP服务器

 
阅读更多

在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择。本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作。

关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 。之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码。

FavFTPUtil.Java

 

packagecom.favccxx.favsoft.util;

 

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

 

importorg.apache.commons.net.ftp.FTPClient;

importorg.apache.commons.net.ftp.FTPFile;

importorg.apache.commons.net.ftp.FTPReply;

 

publicclassFavFTPUtil {

  

 /**

 * 上传文件(可供Action/Controller层使用)

 * @param hostname FTP服务器地址

 * @param port FTP服务器端口号

 * @param username FTP登录帐号

 * @param password FTP登录密码

 * @param pathname FTP服务器保存目录

 * @param fileName 上传到FTP服务器后的文件名称

 * @param inputStream 输入文件流

 * @return

 */

 publicstaticbooleanuploadFile(String hostname, intport, String username, String password, String pathname, String fileName, InputStream inputStream){

 booleanflag = false;

 FTPClient ftpClient = newFTPClient();

 ftpClient.setControlEncoding("UTF-8");

 try{

 //连接FTP服务器

 ftpClient.connect(hostname, port);

 //登录FTP服务器

 ftpClient.login(username, password);

 //是否成功登录FTP服务器

 intreplyCode = ftpClient.getReplyCode();

 if(!FTPReply.isPositiveCompletion(replyCode)){

 returnflag;

 }

  

 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

 ftpClient.makeDirectory(pathname);

 ftpClient.changeWorkingDirectory(pathname);

 ftpClient.storeFile(fileName, inputStream);

 inputStream.close();

 ftpClient.logout();

 flag = true;

 } catch(Exception e) {

 e.printStackTrace();

 } finally{

 if(ftpClient.isConnected()){

 try{

 ftpClient.disconnect();

 } catch(IOException e) {

 e.printStackTrace();

 }

 }

 }

 returnflag;

 }

  

  

 /**

 * 上传文件(可对文件进行重命名)

 * @param hostname FTP服务器地址

 * @param port FTP服务器端口号

 * @param username FTP登录帐号

 * @param password FTP登录密码

 * @param pathname FTP服务器保存目录

 * @param filename 上传到FTP服务器后的文件名称

 * @param originfilename 待上传文件的名称(绝对地址)

 * @return

 */

 publicstaticbooleanuploadFileFromProduction(String hostname, intport, String username, String password, String pathname, String filename, String originfilename){

 booleanflag = false;

 try{

 InputStream inputStream = newFileInputStream(newFile(originfilename));

 flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream);

 } catch(Exception e) {

 e.printStackTrace();

 }

 returnflag;

 }

  

 /**

 * 上传文件(不可以进行文件的重命名操作)

 * @param hostname FTP服务器地址

 * @param port FTP服务器端口号

 * @param username FTP登录帐号

 * @param password FTP登录密码

 * @param pathname FTP服务器保存目录

 * @param originfilename 待上传文件的名称(绝对地址)

 * @return

 */

 publicstaticbooleanuploadFileFromProduction(String hostname, intport, String username, String password, String pathname, String originfilename){

 booleanflag = false;

 try{

 String fileName = newFile(originfilename).getName();

 InputStream inputStream = newFileInputStream(newFile(originfilename));

 flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream);

 } catch(Exception e) {

 e.printStackTrace();

 }

 returnflag;

 }

  

  

 /**

 * 删除文件

 * @param hostname FTP服务器地址

 * @param port FTP服务器端口号

 * @param username FTP登录帐号

 * @param password FTP登录密码

 * @param pathname FTP服务器保存目录

 * @param filename 要删除的文件名称

 * @return

 */

 publicstaticbooleandeleteFile(String hostname, intport, String username, String password, String pathname, String filename){

 booleanflag = false;

 FTPClient ftpClient = newFTPClient();

 try{

 //连接FTP服务器

 ftpClient.connect(hostname, port);

 //登录FTP服务器

 ftpClient.login(username, password);

 //验证FTP服务器是否登录成功

 intreplyCode = ftpClient.getReplyCode();

 if(!FTPReply.isPositiveCompletion(replyCode)){

 returnflag;

 }

 //切换FTP目录

 ftpClient.changeWorkingDirectory(pathname);

 ftpClient.dele(filename);

 ftpClient.logout();

 flag = true;

 } catch(Exception e) {

 e.printStackTrace();

 } finally{

 if(ftpClient.isConnected()){

 try{

 ftpClient.logout();

 } catch(IOException e) {

  

 }

 }

 }

 returnflag;

 }

  

 /**

 * 下载文件

 * @param hostname FTP服务器地址

 * @param port FTP服务器端口号

 * @param username FTP登录帐号

 * @param password FTP登录密码

 * @param pathname FTP服务器文件目录

 * @param filename 文件名称

 * @param localpath 下载后的文件路径

 * @return

 */

 publicstaticbooleandownloadFile(String hostname, intport, String username, String password, String pathname, String filename, String localpath){

 booleanflag = false;

 FTPClient ftpClient = newFTPClient();

 try{

 //连接FTP服务器

 ftpClient.connect(hostname, port);

 //登录FTP服务器

 ftpClient.login(username, password);

 //验证FTP服务器是否登录成功

 intreplyCode = ftpClient.getReplyCode();

 if(!FTPReply.isPositiveCompletion(replyCode)){

 returnflag;

 }

 //切换FTP目录

 ftpClient.changeWorkingDirectory(pathname);

 FTPFile[] ftpFiles = ftpClient.listFiles();

 for(FTPFile file : ftpFiles){

 if(filename.equalsIgnoreCase(file.getName())){

 File localFile = newFile(localpath + "/"+ file.getName());

 OutputStream os = newFileOutputStream(localFile);

 ftpClient.retrieveFile(file.getName(), os);

 os.close();

 }

 }

 ftpClient.logout();

 flag = true;

 } catch(Exception e) {

 e.printStackTrace();

 } finally{

 if(ftpClient.isConnected()){

 try{

 ftpClient.logout();

 } catch(IOException e) {

  

 }

 }

 }

 returnflag;

 }

 

}

FavFTPUtilTest.java

 

packagecom.favccxx.favsoft.util;

 

importjunit.framework.TestCase;

 

publicclassFavFTPTest extendsTestCase {

  

 publicvoidtestFavFTPUtil(){

 String hostname = "127.0.0.1";

 intport = 21;

 String username = "business";

 String password = "business";

 String pathname = "business/ebook";

 String filename = "big.rar";

 String originfilename = "C:\\Users\\Downloads\\Downloads.rar";

 FavFTPUtil.uploadFileFromProduction(hostname, port, username, password, pathname, filename, originfilename);

// String localpath = "D:/";

  

// FavFTPUtil.downloadFile(hostname, port, username, password, pathname, filename, localpath);

 }

 

}

 

 

 

分享到:
评论

相关推荐

    java实现文件上传到ftp

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

    使用java实现的linux和ftp服务器文件上传下载工具

    这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...

    Java FTP 指定下载文件和上传文件到指定的服务器目录

    在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...

    Java实现FTP文件上传和下载

    2. **连接服务器**:创建一个FTPClient实例,然后通过`connect()`方法连接到FTP服务器。你需要提供服务器的地址、端口号(默认21)和登录凭证(用户名和密码)。 ```java FTPClient ftpClient = new FTPClient(); ...

    java+jsp代码实现从FTP服务器上传下载文件

    在JSP页面中实现从FTP服务器下载文件主要有三种方式: 1. **直接链接文件地址:** - 这种方法最简单直接,用户点击链接后浏览器会尝试打开或下载该文件。示例代码如下: ```html <a href='ftp://用户名:密码@IP...

    java 调用ftp上传、下载文件到服务器

    本文将详细讲解如何使用Java来实现FTP文件的上传和下载功能。 FTP客户端库是实现此功能的关键,Java标准库中并没有内置FTP客户端,但我们可以借助第三方库如Apache Commons Net或者JSch等来实现。这里我们以Apache ...

    java中生成xml文件,并上传至ftp服务器

    JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。

    java上传文件到ftp.txt

    ### Java上传文件到FTP知识点详解 #### 一、概述 在现代软件开发中,文件传输是一项常见的需求。其中,FTP(文件传输协议)是最常用的一种文件传输方式之一。本篇文章将详细阐述如何利用Java编程语言实现本地文件...

    JAVA技术实现上传下载文件到FTP服务器(完整)

    `downloadFile`方法的逻辑类似,但会使用`retrieveFileStream`或`retrieveFile`方法从FTP服务器下载文件到本地。此外,可能还包含一个选择性重命名下载文件的选项。 FTP服务器的搭建和配置不在本篇讨论范围内,但...

    java实现客户端上传图片到ftp服务器,nginx提供http服务下载图片

    在Java分布式项目中,涉及到客户端上传图片到FTP服务器并由Nginx提供HTTP服务进行图片下载,这是一个典型的文件传输和Web服务集成的场景。这里主要涉及三个关键知识点:Java FTP客户端编程、Nginx服务器配置以及Java...

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

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

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

    本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成基于 Web 的批量、大文件的上传下载...

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

    总的来说,实现Java大文件上传至FTP服务器并显示同步进度条涉及的关键技术点包括:FTPClient的使用、文件的分块上传、多线程同步、GUI组件的更新以及异常处理。通过合理设计和优化,可以实现高效且用户体验良好的大...

    java编写的ftp文件实时监控下载上传

    用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...

    java上传文件到ftp服务器

    上传文件时通常使用BINARY模式,因为文件可能包含非文本数据。你可以通过调用`FTPClient.setFileType(FTP.BINARY_FILE_TYPE)`来设置。 5. 上传文件: 使用`FTPClient.storeFile()`方法上传文件。首先,需要将本地...

    java实现的ftp文件上传

    首先,我们来看标题和描述中的关键词"java实现的ftp文件上传",这表明我们要讨论的是使用Java编程语言来实现在FTP服务器上上传文件的过程。Java提供了一个名为`java.net.Socket`的基本网络连接类,但直接使用它来...

    Java FTP 实现跨服务器文件上传下载

    首先,需要创建一个FTPClient实例并连接到FTP服务器: ```java FTPClient ftpClient = new FTPClient(); try { ftpClient.connect("ftp.server.com", 21); ftpClient.login("username", "password"); } catch...

    java实现FTP服务器

    ### Java实现FTP服务器的关键知识点 在探讨如何使用Java实现FTP(File Transfer Protocol)服务器之前,我们首先需要理解FTP的基本概念及其工作原理。FTP是一种用于在网络上进行文件传输的标准协议,它支持上传...

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

    在上面的代码中,我们首先连接到 FTP 服务器,然后登录 FTP 服务器,接着将文件下载到本地,最后关闭连接。 FTPClient 的其他功能 除了上传和下载文件外,FTPClient 还提供了其他许多功能,例如删除文件、创建目录...

    java FTP服务器文件上传下载,创建多级文件夹.zip

    Java FTP服务器文件上传下载是Java开发中常见的网络编程任务,主要涉及到FTP(File Transfer Protocol)协议的应用,用于在客户端和服务器之间传输文件。本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载...

Global site tag (gtag.js) - Google Analytics