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; } }
java ftp 上传文件
猜你喜欢
转载自dtt3401885.iteye.com/blog/2270319
今日推荐
周排行