`
Jeenry119
  • 浏览: 69400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用edtftpj组件实现FTP文件的上传--方法二(1)

 
阅读更多
edtftpj下载:http://www.enterprisedt.com/products/edtftpj/download.html

需求描述:把WEB服务器上一个目录中所有的文件上传到指定ftp服务器的某个目录中。
分析:
        在edtftpj中有个FTPClient类,此类可以实现ftp的上传。用到的几个函数说明如下:
        1、构造函数  FTPClient(ftp服务器,ftp端口)
        2、login(ftp登录账号,ftp密码)    //登录ftp服务器
        3、chdir("文件夹名")     //进入ftp上的某个目录,类似DOS的cd命令
        4、setType(FTPTransferType.BINARY)  //设置传输类型
        5、mkdir("文件夹名")    //在ftp当前目录下新建一个目录
问题:
       利用此组件在测试过程中,发现当上传含有中文的文件名时会失败(FTPClient认为它不是一个文件,奇怪)!
完整程序:
package yhp.test.util;
import java.io.File;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPTransferType;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class FTPUpload {
    private String ftpServer;
    private String ftpPort;
    private String ftpUserName;
    private String ftpPassword;
    private FTPClient ftpClient;
    private boolean isLogin = false;
    public FTPUpload(String pFtpServer, String pFtpPort, String pFtpUserName,
            String pFtpPassword) throws Exception {
        this.ftpServer = pFtpServer;
        if(pFtpPort.trim().equals(""))
            this.ftpPort="21";
        else
            this.ftpPort = pFtpPort;
        if(pFtpUserName.trim().equals(""))
            this.ftpUserName ="Anonymous";
        else
            this.ftpUserName = pFtpUserName;
        this.ftpPassword = pFtpPassword;
        try {
            ftpClient = new FTPClient(ftpServer, Integer.parseInt(ftpPort));           
            ftpClient.login(ftpUserName, ftpPassword);
            ftpClient.chdir("\\");//在有的ftp服务器运行会出错,用ftpClient.chdir("/")又可以了
            isLogin = true;
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }
    //上传指定文件夹到ftp服务器上
    public String uploadFolder(String folderName,String ftpPath)throws Exception{
        if (isLogin) {
            String strMsg="";
            try{
          File file=new File(folderName);
          if(file.isDirectory()){
              ftpClient.chdir("\\");
              ftpClient.setType(FTPTransferType.BINARY);
              if (checkFolderIsExist(ftpPath)) {
                  ftpClient.chdir(ftpPath);
              } else {
                  createFolder(ftpPath);
              }
              if(!checkFolderIsExist(file.getName())){
                  ftpClient.mkdir(file.getName());
              }
                 ftpClient.chdir(file.getName());
              ftpPath=ftpPath+"\\"+file.getName();
              File[] files=file.listFiles();
              for(int i=0;i<files.length;i++){
                  if(files[i].isDirectory()){
                      uploadFolder(files[i].getPath(),ftpPath);
                  }else{
                      if(files[i].isFile()){
                       try{
                           ftpClient.put(files[i].getPath(),files[i].getName());
                       }catch(Exception ee){
                           strMsg+="upload file<<:"+files[i].getPath()+">> error!Message:"+ee.getMessage()+"\r\n";
                       }
                      }
                  }
              }
              if(!strMsg.equals("")){
                  throw new Exception(strMsg);
              }
          }else{
              throw new Exception(folderName+" is not a folder'name!");
          }
            }catch(Exception e){
                strMsg+=e.getMessage()+"\r\n";
            }
            return strMsg;
        } else {
            throw new Exception("you didnot login remote ftp server!");
        }
    }
   

分享到:
评论

相关推荐

    使用QT实现文件上传和下载----ftp服务器

    FTP上传文件的实现可以使用QNetworkAccessManager的put()函数。假设我们有一个本地文件`localFilePath`,我们希望上传到服务器的`remoteFilePath`: ```cpp QFile localFile(localFilePath); if (!localFile.open...

    ftp-0.17-54.el6.x86_64.zip

    FTP协议允许用户在两台计算机之间上传、下载文件,或者进行其他文件管理操作。它基于TCP/IP协议栈,工作在应用层(OSI模型的第七层),通常使用20号端口进行数据传输,21号端口用于控制连接。 `ftp-0.17-54.el6.x86...

    java实现的ftp文件上传

    1. **FtpUpload.java**:这个文件很可能是实现FTP文件上传的主要Java类。它可能包含了创建`FTPClient`实例,连接到FTP服务器,设置登录凭据,改变工作目录,设置传输模式(ASCII或二进制),以及实际的文件上传逻辑...

    hdfs-over-ftp-hadoop-0.20.0.rar_ftp_ftpoverhdfs_hdfs文件传入ftp_java

    描述 "在hadoop分布式文件系统上实现ftp服务" 暗示了这个压缩包包含了一个解决方案,允许用户使用FTP协议来上传、下载或管理HDFS中的文件。这对于那些习惯于使用FTP或者不熟悉Hadoop API的用户来说,是一个便捷的...

    Delphi_组件实现FTP上传

    总的来说,Delphi结合Indy库的TIdFTP组件,为开发者提供了一个强大且易于使用的FTP客户端解决方案,使得在Delphi应用程序中实现文件的上传和下载变得简单高效。只要掌握了基本的使用方法,就可以轻松地将FTP功能集成...

    实现Qt-FTP上传文件

    在本文中,我们将深入探讨如何使用Qt库与libcurl库结合,实现在C++应用程序中进行FTP文件上传的功能。Qt是一个强大的跨平台开发框架,它提供了丰富的GUI组件和网络功能,而libcurl则是一个用于处理多种互联网协议的...

    VB代码利用FTP实现文件上传于下载代码

    在Visual Basic(VB)编程环境中,我们可以利用FTP协议来实现文件的上传和下载功能。以下将详细介绍如何在VB中利用FTP进行文件操作,并提供相关的知识点。 首先,VB中的FTP操作通常需要使用System.Net命名空间中的...

    winform实现FTP上传、下载、删除文件

    **FTP上传文件:** 要实现FTP文件上传,我们首先创建一个`FtpWebRequest`对象,设置其方法为`WebMethod.UploadFile`,然后提供FTP服务器的URL、用户名和密码。接着,打开一个流写入器,将本地文件内容写入请求的主体...

    Delphi 实现FTP连接及上传下载

    使用Delphi和Indy库,你可以轻松地构建功能完备的FTP客户端应用,实现文件的高效上传和下载。 以上就是关于“Delphi实现FTP连接及上传下载”的详细知识点。通过理解和实践这些步骤,开发者可以在Delphi应用程序中...

    Android Studio实现FTP文件上传

    在实际应用中,为了增强用户体验,你可能需要监听FTP上传进度并更新UI。这可以通过FTPClient的`setProgressListener`方法实现。同时,记得在上传完成后断开FTP连接: ```java ftp.logout(); ftp.disconnect(); ``` ...

    commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar、edtftpj.jar

    在Java应用程序中,开发者可以利用这个库实现复杂的FTP操作,包括文件的上传、下载、移动、重命名以及目录管理等。 这些库文件在Java FTP编程中至关重要,它们为开发者提供了方便的接口和功能,使得处理FTP通信变得...

    java实现ftp上传jar包

    Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...

    ftp4che-src-0.7.1.zip

    * 说明: 一、使用edtftpj 2.0.1开源包 二、实现了以下功能 1、上传指定文件夹(包括子文件和文件夹) 2、下载FTP上指定的文件夹 3、上传指定文件夹下的所有文件到FTP指定目录下 4、删除...

    netkit-ftp-0.17嵌入式ftp客户端源码(加入了编译修改)

    在嵌入式系统开发领域,FTP客户端是实现远程文件传输的重要组件。本文将详细探讨基于netkit-ftp-0.17的源码,并结合其中加入的补丁netkit-ftp-0.17-cross.patch,以及对glob.c和makefile的修改,来解析其在嵌入式ARM...

    C#实现的FTP文件上传和下载

    在本文中,我们将深入探讨如何使用C#编程语言来实现FTP(文件传输协议)客户端功能,包括文件的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C#提供了一个强大的类库——`System.Net....

    ftp-0.17-51.1.el6.x86_64.rpm

    ftp-0.17-51.1.el6.x86_64.rpm

    SU-FTP-Server-Windows-v15.0.0

    “用于FTP文档的生成”可能是指该软件提供了创建、管理和维护FTP站点的功能,使得文件上传和下载过程变得简单高效。“不失真,方便使用”强调了该软件在传输文件时能保持文件完整性,同时具有用户友好的界面和操作...

    VB代码利用FTP实现文件上传于下载代码和总结

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网...以上就是关于VB利用FTP实现文件上传和下载的详细讲解,希望对您有所帮助。在实践中,可以根据具体需求调整和完善代码,以满足各种场景的需求。

    Ftp客户端实现:Ftp文件上传,Ftp文件加密,Ftp文件夹上传

    本文将详细介绍如何实现FTP客户端的功能,包括单文件上传、多文件上传、文件加密、下载文件、解密文件以及文件夹上传。 ### FTP客户端基础 FTP客户端通常由以下几个核心组件构成: 1. **连接管理**:客户端需要与...

    用JAVA实现Ftp文件上传下载

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

Global site tag (gtag.js) - Google Analytics