package com.detao.dtma.filter;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import com.detao.dtma.utils.Configuration;
public class FtpFile {
private static Logger logger = Logger.getLogger(FtpFile.class);
String ftpinfor = Configuration.getProperty("ftp.file.information");
String[] ftpin=ftpinfor.split("/");
String filetype="picture,files,video,others";
String[] dire=filetype.split(",");
String picturetype = Configuration.getProperty("ftp.file.picturetype");
String filestype = Configuration.getProperty("ftp.file.filestype");
String videotype = Configuration.getProperty("ftp.file.videotype");
/**
* 获取FTPClient对象
* @param ftpHost FTP主机服务器
* @param ftpPassword FTP 登录密码
* @param ftpUserName FTP登录用户名
* @param ftpPort FTP端口 默认为21
* @return
*/
public static FTPClient getFTPClient(String ftpHost, String ftpPassword,
String ftpUserName, int ftpPort) {
FTPClient ftpClient = null;
try {
ftpClient = new FTPClient();
ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
logger.info("未连接到FTP,用户名或密码错误。");
ftpClient.disconnect();
} else {
logger.info("FTP连接成功。");
}
} catch (SocketException e) {
e.printStackTrace();
logger.info("FTP的IP地址可能错误,请正确配置。");
} catch (IOException e) {
e.printStackTrace();
logger.info("FTP的端口错误,请正确配置。");
}
return ftpClient;
}
/**
* 本地上传文件到FTP服务器
*
* @param ftpPath
* 远程文件路径FTP
* @return
* @throws IOException
*/
public String upload(String filePath,String filename) {
FTPClient ftpClient = null;
String dirurl="";
try {
ftpClient = getFTPClient(ftpin[0], ftpin[1],ftpin[2], Integer.parseInt(ftpin[3]));
// 设置PassiveMode传输
ftpClient.enterLocalPassiveMode();
// 设置以二进制流的方式传输
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(ftpin[4]); //新建OA文件夹
ftpClient.changeWorkingDirectory(ftpin[4]);//路径转移OA文件夹
String[] filtype=filename.split("\\.");
System.out.println(filtype.length);
dirurl+="/"+ftpin[4];
if(filtype.length>1){
int ff= filtype.length;
if(picturetype.contains(filtype[(ff-1)])){
ftpClient.makeDirectory(dire[0]);
ftpClient.changeWorkingDirectory(dire[0]);
dirurl+="/"+dire[0];
}else if(filestype.contains(filtype[(ff-1)])){
ftpClient.makeDirectory(dire[1]);
ftpClient.changeWorkingDirectory(dire[1]);
dirurl+="/"+dire[1];
}else if(videotype.contains(filtype[(ff-1)])){
ftpClient.makeDirectory(dire[2]);
ftpClient.changeWorkingDirectory(dire[2]);
dirurl+="/"+dire[2];
}else{
ftpClient.makeDirectory(dire[3]);
ftpClient.changeWorkingDirectory(dire[3]);
dirurl+="/"+dire[3];
}
dirurl+="/"+filename;
File f = new File(filePath);
InputStream in = new FileInputStream(f);
ftpClient.storeFile(filename, in);
in.close();
f.delete();
}else{
dirurl="create error";
}
} catch (Exception e) {
e.printStackTrace();
dirurl="create error";
}finally{
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return dirurl;
}
}