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!"); } }
详细解决方案
利用edtftpj组件实现FTP文件的下传-方法二(1)
热度:236 发布时间:2012-08-27 21:21:57.0
相关解决方案