ftp上传工具类(java)

刺骨的言语ヽ痛彻心扉 2022-07-13 12:19 304阅读 0赞
  1. package com.taotao.utils;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import org.apache.commons.net.ftp.FTP;
  10. import org.apache.commons.net.ftp.FTPClient;
  11. import org.apache.commons.net.ftp.FTPFile;
  12. import org.apache.commons.net.ftp.FTPReply;
  13. /** * ftp上传下载工具类 * @author * @date 2015年7月29日下午8:11:51 * @version 1.0 */
  14. public class FtpUtil {
  15. /** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录 * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */
  16. public static boolean uploadFile(String host, int port, String username, String password, String basePath,
  17. String filePath, String filename, InputStream input) {
  18. boolean result = false;
  19. FTPClient ftp = new FTPClient();
  20. try {
  21. int reply;
  22. ftp.connect(host, port);// 连接FTP服务器
  23. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
  24. ftp.login(username, password);// 登录
  25. reply = ftp.getReplyCode();
  26. if (!FTPReply.isPositiveCompletion(reply)) {
  27. ftp.disconnect();
  28. return result;
  29. }
  30. //切换到上传目录
  31. if (!ftp.changeWorkingDirectory(basePath+filePath)) {
  32. //如果目录不存在创建目录
  33. String[] dirs = filePath.split("/");
  34. String tempPath = basePath;
  35. for (String dir : dirs) {
  36. if (null == dir || "".equals(dir)) continue;
  37. tempPath += "/" + dir;
  38. if (!ftp.changeWorkingDirectory(tempPath)) {
  39. if (!ftp.makeDirectory(tempPath)) {
  40. return result;
  41. } else {
  42. ftp.changeWorkingDirectory(tempPath);
  43. }
  44. }
  45. }
  46. }
  47. //设置上传文件的类型为二进制类型
  48. ftp.setFileType(FTP.BINARY_FILE_TYPE);
  49. //上传文件
  50. if (!ftp.storeFile(filename, input)) {
  51. return result;
  52. }
  53. input.close();
  54. ftp.logout();
  55. result = true;
  56. } catch (IOException e) {
  57. e.printStackTrace();
  58. } finally {
  59. if (ftp.isConnected()) {
  60. try {
  61. ftp.disconnect();
  62. } catch (IOException ioe) {
  63. }
  64. }
  65. }
  66. return result;
  67. }
  68. /** * Description: 从FTP服务器下载文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */
  69. public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
  70. String fileName, String localPath) {
  71. boolean result = false;
  72. FTPClient ftp = new FTPClient();
  73. try {
  74. int reply;
  75. ftp.connect(host, port);
  76. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
  77. ftp.login(username, password);// 登录
  78. reply = ftp.getReplyCode();
  79. if (!FTPReply.isPositiveCompletion(reply)) {
  80. ftp.disconnect();
  81. return result;
  82. }
  83. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
  84. FTPFile[] fs = ftp.listFiles();
  85. for (FTPFile ff : fs) {
  86. if (ff.getName().equals(fileName)) {
  87. File localFile = new File(localPath + "/" + ff.getName());
  88. OutputStream is = new FileOutputStream(localFile);
  89. ftp.retrieveFile(ff.getName(), is);
  90. is.close();
  91. }
  92. }
  93. ftp.logout();
  94. result = true;
  95. } catch (IOException e) {
  96. e.printStackTrace();
  97. } finally {
  98. if (ftp.isConnected()) {
  99. try {
  100. ftp.disconnect();
  101. } catch (IOException ioe) {
  102. }
  103. }
  104. }
  105. return result;
  106. }
  107. public static void main(String[] args) {
  108. try {
  109. FileInputStream in=new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));
  110. boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in);
  111. System.out.println(flag);
  112. } catch (FileNotFoundException e) {
  113. e.printStackTrace();
  114. }
  115. }
  116. }

发表评论

表情:
评论列表 (有 0 条评论,304人围观)

还没有评论,来说两句吧...

相关阅读