1、前言
ftp 配置详解,参照前面的博文,这里有一份例子是关于配置在数据库的
http://download.csdn.net/detail/ice_grey/8525957
2、ftp 操作工具类
自己个人开发用到的,网上有许多,代码部分来源网上,但好象都有路径中文问题,或者其他问题,自己修改了一下,并测试通过
2.1
package cn.sinobest.ypgj.netdisk.util;
public class FTPModel {
private String ftpId;
private String username;
private String password;
private String url;
private int port;
private String remoteDir;
public FTPModel() {
}
public FTPModel(String username, String password, String url, int port,
String remoteDir) {
this.username = username;
this.password = password;
this.url = url;
this.port = port;
this.remoteDir = remoteDir;
}
public String getFtpId() {
return ftpId;
}
public void setFtpId(String ftpId) {
this.ftpId = ftpId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getRemoteDir() {
return remoteDir;
}
public void setRemoteDir(String remoteDir) {
this.remoteDir = remoteDir;
}
}
2.2
package cn.sinobest.ypgj.netdisk.util;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;
/**
* Apache.FTPClient FTP操作共公类
*
* @author
*
*/
public class FTPCommon {
private FTPClient ftpClient;
private FTPModel ftpModel;
private static String LOCAL_CHARSET = "GBK";// FTP协议里面,规定文件名编码为iso-8859-1private static String SERVER_CHARSET = "ISO-8859-1";
private static final String ROOT = "/";
public FTPCommon(FTPModel ftp) {
super();
// 从配置文件中读取初始化信息
this.ftpClient = new FTPClient();
this.ftpModel = ftp;
}
/**
* 连接并登录FTP服务器
*
*/
public boolean ftpLogin() throws IOException {
boolean isLogin = false;
FTPClientConfig ftpClientConfig = new FTPClientConfig(
FTPClientConfig.SYST_NT);
ftpClientConfig.setServerTimeZoneId(TimeZone.getDefault().getID());
this.ftpClient.setControlEncoding("UTF-8");
// ftpClient.enterLocalPassiveMode();
this.ftpClient.configure(ftpClientConfig);
try {
if (this.ftpModel.getPort() > 0) {
this.ftpClient.connect(ftpModel.getUrl(), ftpModel.getPort());
} else {
this.ftpClient.connect(ftpModel.getUrl());
}
// FTP服务器连接回答
int reply = this.ftpClient.getReplyCode();
// if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {// 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK).
// LOCAL_CHARSET = "UTF-8";
// }
if (!FTPReply.isPositiveCompletion(reply)) {
this.ftpClient.disconnect();
return isLogin;
}
isLogin = this.ftpClient.login(this.ftpModel.getUsername(), this.ftpModel
.getPassword());
this.ftpClient.changeWorkingDirectory(this.ftpModel.getRemoteDir());
this.ftpClient.setFileType(FTPClient.FILE_STRUCTURE);
// LogUtil.infoOutPut("成功登陆FTP服务器:" + this.ftpModel.getUrl() + " 端口号:"
// + this.getFtpModel().getPort() + " 目录:"
// + this.ftpModel.getRemoteDir());
} catch (SocketException e) {
e.printStackTrace();
// LogUtil.logPrint("连接FTP服务失败!", Constants.LOG_EXCEPTION);
// LogUtil.logPrint(e.getMessage(), Constants.LOG_EXCEPTION);
} catch (IOException e) {
e.printStackTrace();
System.out.println("登录FTP服务失败!");
// LogUtil.logPrint("登录FTP服务失败!", Constants.LOG_EXCEPTION);
// LogUtil.logPrint(e.getMessage(), Constants.LOG_EXCEPTION);
}
if(isLogin){
System.out.println("成功登陆FTP服务器:" + this.ftpModel.getUrl() + " 端口号:"
+ this.getFtpModel().getPort() + " 目录:"
+ this.ftpModel.getRemoteDir());
}
System.out.println(this.ftpClient.getBufferSize());
this.ftpClient.setBufferSize(1024 * 2);
this.ftpClient.setDataTimeout(2000);
return isLogin;
}
/**
* 退出并关闭FTP连接
*
*/
public void close() {
if (