FTP附件传输工具类-FtpUtil
2015-11-06 00:00
295 查看
package com.test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.net.ftp.FTPClient; /** * ftp附件传输工具类 * @since jdk1.6 * */ public class FtpUtil { public String ftpRootPath = ""; public String ftpIp = ""; public int ftpPort = 21; public String ftpUser = ""; public String ftpPassword = ""; /** * ftp附件传输方法,使用前需将FtpUtil的变量(ftpRootPath、ftpIp、ftpPort、ftpUser、ftpPassword)赋值 * 1.ftpRootPath: ftp根目录; * 2.ftpIp: ftp IP地址; * 3.ftpPort: ftp端口号; * 4.ftpUser: 用户名; * 5.ftpPassword: 密码; * @param srcPath 附件源路径 * @param path 上传相对路径 * @return true:上传成功; false:上传失败 */ public boolean upload(String srcPath,String path){ String attName = srcPath.substring(srcPath.lastIndexOf("/")+1); System.out.println("-----transfer start-----:" + attName); boolean flag = false; FTPClient ftpClient = new FTPClient(); FileInputStream fis = null; try { ftpClient.connect(ftpIp,ftpPort); ftpClient.login(ftpUser, ftpPassword); File srcFile = new File(srcPath); fis = new FileInputStream(srcFile); ftpClient.changeWorkingDirectory(ftpRootPath); //设置上传目录 if(!change2TargetDirectory(ftpClient,path)){ return false; } ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("UTF-8"); //ftpClient.enterLocalPassiveMode(); //设置文件类型(二进制) ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); flag = ftpClient.storeFile(attName, fis); if(flag){ System.out.println("-----transfer result-----:success" + attName); }else{ System.out.println("-----transfer result-----:fail" + attName); } fis.close(); ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("FTP客户端出错!", e); } finally { IOUtils.closeQuietly(fis); try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("关闭FTP连接发生异常!", e); } } return flag; } private boolean change2TargetDirectory(FTPClient ftpClient,String path){ boolean result = true; try { //路径为空则转到根目录 if(StringUtils.isEmpty(path)){ ftpClient.changeWorkingDirectory(ftpRootPath); } String[] pathArr = path.split("/"); for(int i=0;i<pathArr.length;i++){ if(ftpClient.changeWorkingDirectory(pathArr[i])){ continue; }else{ if(!ftpClient.makeDirectory(pathArr[i]) || !ftpClient.changeWorkingDirectory(pathArr[i])){ result = false; break; } } } } catch (Exception e) { throw new RuntimeException("切换FTP目录出错!", e); } return result; } }
相关文章推荐
- 一个php函数,能够遍历一个文件夹下的所有文件和子文件夹 。
- PHP中ob_start和pack及unpack
- ExpertPdf生成多页pdf文档内容大小不一致的解决办法
- php连接mysql的问题
- Ubuntu 14.04配置vsftpd
- php download断点
- ubuntu 设置ntp服务
- PHP urldecode()与urlencode()函数
- php遍历数据库
- PHP实现简单高精度的求PI方法
- phpmyadmin 配置文件权限错误,无法写入!
- 解决yii框架中,使用参数化查询时,IN只能查询一个的代替方法
- 为什么上传文件的表单需要设置enctype="multipart/form-data"
- PHP中VC6、VC9、TS、NTS版本的区别与用法详解
- ThinkPHP创建应用的一般开发流程及实例
- 使用ThinkPHP框架快速开发网站(多图)
- PHP 获取二维数组中某个key的集合
- PHP快速排序算法
- PHP上传文件的简单例子与说明
- PHP实现投镖求PI法,最笨但最有意思