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!");
}
}
分享到:
相关推荐
Linux FTP Shell指的是在Linux系统中使用FTP协议进行文件传输时的一种交互式命令行环境,它允许用户通过命令行界面执行FTP操作。在这个场景中,`ftp-0.17-54.el6.x86_64.rpm` 是一个RPM(Red Hat Package Manager)...
FTP上传文件的实现可以使用QNetworkAccessManager的put()函数。假设我们有一个本地文件`localFilePath`,我们希望上传到服务器的`remoteFilePath`: ```cpp QFile localFile(localFilePath); if (!localFile.open...
1. **FtpUpload.java**:这个文件很可能是实现FTP文件上传的主要Java类。它可能包含了创建`FTPClient`实例,连接到FTP服务器,设置登录凭据,改变工作目录,设置传输模式(ASCII或二进制),以及实际的文件上传逻辑...
总的来说,Delphi结合Indy库的TIdFTP组件,为开发者提供了一个强大且易于使用的FTP客户端解决方案,使得在Delphi应用程序中实现文件的上传和下载变得简单高效。只要掌握了基本的使用方法,就可以轻松地将FTP功能集成...
在Visual Basic(VB)编程环境中,我们可以利用FTP协议来实现文件的上传和下载功能。以下将详细介绍如何在VB中利用FTP进行文件操作,并提供相关的知识点。 首先,VB中的FTP操作通常需要使用System.Net命名空间中的...
在Java应用程序中,开发者可以利用这个库实现复杂的FTP操作,包括文件的上传、下载、移动、重命名以及目录管理等。 这些库文件在Java FTP编程中至关重要,它们为开发者提供了方便的接口和功能,使得处理FTP通信变得...
这个命令行工具允许用户连接到远程FTP服务器,执行文件上传、下载等操作。在使用前,确保已正确配置了网络连接,并知道目标FTP服务器的地址和登录凭据。 FTP协议本身有两种主要的工作模式:主动模式(Port)和被动...
在实际应用中,为了增强用户体验,你可能需要监听FTP上传进度并更新UI。这可以通过FTPClient的`setProgressListener`方法实现。同时,记得在上传完成后断开FTP连接: ```java ftp.logout(); ftp.disconnect(); ``` ...
"SU-FTP-Server-Windows-v15.1.1" 是一款专为Windows平台设计的FTP服务器软件,主要用于在局域网或互联网上提供文件传输服务。该版本号15.1.1表明这是一个更新迭代后的稳定版本,通常包含了性能优化、安全修复和新...
Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...
可以封装一个简单的 JavaFTP 客户端工具,使用 edtftpj 提供的 API 实现 FTP 文件传输。 ``` import com.enterprisedt.net.ftp.FTPException; import com.enterprisedt.net.ftp.FTPFile; import ...
**FTP上传文件:** 要实现FTP文件上传,我们首先创建一个`FtpWebRequest`对象,设置其方法为`WebMethod.UploadFile`,然后提供FTP服务器的URL、用户名和密码。接着,打开一个流写入器,将本地文件内容写入请求的主体...
本教程将深入探讨如何使用前端插件实现文件上传到FTP(File Transfer Protocol)服务器的过程,这是一个广泛用于文件传输的标准协议。我们将讨论关键概念、步骤以及可能涉及的技术。 ### FTP简介 FTP是一种在...
在本文中,我们将深入探讨如何使用C#编程语言来实现FTP(文件传输协议)客户端功能,包括文件的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C#提供了一个强大的类库——`System.Net....
“用于FTP文档的生成”可能是指该软件提供了创建、管理和维护FTP站点的功能,使得文件上传和下载过程变得简单高效。“不失真,方便使用”强调了该软件在传输文件时能保持文件完整性,同时具有用户友好的界面和操作...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网...以上就是关于VB利用FTP实现文件上传和下载的详细讲解,希望对您有所帮助。在实践中,可以根据具体需求调整和完善代码,以满足各种场景的需求。
本文将详细介绍如何实现FTP客户端的功能,包括单文件上传、多文件上传、文件加密、下载文件、解密文件以及文件夹上传。 ### FTP客户端基础 FTP客户端通常由以下几个核心组件构成: 1. **连接管理**:客户端需要与...
在`TestFtpUpload`文件中,可以编写单元测试或集成测试来验证FTP上传和下载功能。例如,你可以创建一个测试类`FtpOperationsTest`,包含如下方法: ```java import org.junit.jupiter.api.Test; import org.apache....
JTextArea是Java Swing组件,常用于显示多行文本,这里可能被用来实时显示FTP上传过程中的日志信息,为用户提供可视化的上传状态。而Log4j是一个流行的Java日志框架,用于记录程序运行时的各种信息,开发者可能会...
在本文中,我们将深入探讨如何利用Apache的FTPClient库在Java环境中实现FTP文件的上传与下载功能,并简要介绍如何设置FTP服务器进行测试。 1. FTP协议基础: FTP基于TCP/IP协议族,提供了双向通信,允许客户端和...