import java.io.File;
import java.io.IOException;
import com.enterprisedt.net.ftp.FTPConnectMode;
import com.enterprisedt.net.ftp.FTPException;
import com.enterprisedt.net.ftp.FTPTransferType;
import com.enterprisedt.net.ftp.FileTransferClient;
import com.enterprisedt.net.ftp.WriteMode;
/**
* 图片上传工具类.
*
* @author wangenbin(bradley@roadleader.com.cn)
*
*
*/
public class FtpTool {
/**
* edtptpj的上传工具
*/
private FileTransferClient ftp;
/**
* FTP IP
*/
private String ip;
/**
* FTP端口号
*/
private int port;
/**
* FTP用户名
*/
private String username;
/**
* FTP密码
*/
private String password;
/**
*
* 构造方法,初始化FTP IP、FTP端口、FTP用户名、FTP密码
*
* @param ip
* FTP IP
* @param port
* FTP端口
* @param username
* FTP用户名
* @param password
* FTP密码
*/
public FtpTool(String ip, int port, String username, String password) {
this.ip = ip;
this.port = port;
this.username = username;
this.password = password;
}
/**
*
* 连接FTP
*
* @throws FTPException
* FTPException
* @throws IOException
* IOException
* @author XXG
*/
public void connect() throws FTPException, IOException {
ftp = new FileTransferClient();
ftp.setRemoteHost(ip);
ftp.setRemotePort(port);
ftp.setUserName(username);
ftp.setPassword(password);
// 设置二进制方式上传
ftp.setContentType(FTPTransferType.BINARY);
ftp.getAdvancedSettings().setControlEncoding("GBK");
ftp.getAdvancedFTPSettings().setConnectMode(FTPConnectMode.PASV);
ftp.connect();
}
/**
* 是否连接
*
* @return
*/
public boolean isConnect() {
if (ftp == null) {
return false;
} else {
return ftp.isConnected();
}
}
public void stopUpload() {
if (ftp != null) {
ftp.cancelAllTransfers();
}
}
/**
*
* 上传本地文件到FTP服务器上,文件名与原文件名相同
*
* @param localFile
* 本地文件路径
* @param remoteFilePath
* 上传到FTP服务器所在目录(该目录必须已经存在)
* @throws IOException
* IOException
* @throws FTPException
* FTPException
* @author XXG
*
*/
public void resumeUpload(String localFile, String remoteFilePath)
throws FTPException, IOException {
// Date d = new Date();
File local = new File(localFile);
// String remote_tmp = local.getName() + ".tmp";
// 上传:WriteMode.RESUME表示断点续传
String directoryStr[] = remoteFilePath.split("\\");
for (String str : directoryStr) {
ftp.directoryNameList();
// if (!ftp.exists(str)) {
try{
ftp.createDirectory(str);
}catch(FTPException e){
// System.out.println("-------------");
}
// }
ftp.changeDirectory(str);
}
ftp.uploadFile(localFile, local.getName(), WriteMode.RESUME);
for (String str : directoryStr) {
ftp.changeToParentDirectory();
}
// 还原到原来的根目录
// ftp.rename("you\" + remote_tmp, "you\" + local.getName());
}
/**
*
* 关闭FTP连接
*
* @throws IOException
* IOException
* @throws FTPException
* FTPException
* @author XXG
*/
public void close() throws FTPException, IOException {
ftp.disconnect(true);
}
}