一、引言

小编最近忙着学习项目构架上的一些技术,把实用的工具类整理下,单独放在一个项目。其他项目需要用直接使用maven依赖一下就可以使用了。项目中需要实现上传多张图片,由于多张图片,又担心并发量大。所以小编做了一个负载均衡,把上传后的图片保存到linux上的ftp中去,不了解linux上的ftp小编后期编写个教程。

二、实现

以下ftp的工具类,前提需要保证你的ftp服务器能够使用ftp客户端连接工具进行上传和下载文件,不然可能会由于种种原因导致上传或下载失败。

小编项目亲测可用的哟!!

先引入jar包

  <!-- ftp远程工具 --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency>
package com.taotao.model.utils;import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;import java.io.*;/*** ftp上传下载工具类* <p>Title: FtpUtil</p>* @version 1.0*/
public class FtpUtil {/** * 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 */  public static boolean uploadFile(String host, int port, String username, String password, String basePath,String filePath, String filename, InputStream input) {boolean result = false;FTPClient ftp = new FTPClient();try {int reply;ftp.connect(host, port);// 连接FTP服务器// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器ftp.login(username, password);// 登录reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return result;}//切换到上传目录if (!ftp.changeWorkingDirectory(basePath+filePath)) {//如果目录不存在创建目录String[] dirs = filePath.split("/");String tempPath = basePath;for (String dir : dirs) {if (null == dir || "".equals(dir)) continue;tempPath += "/" + dir;if (!ftp.changeWorkingDirectory(tempPath)) {if (!ftp.makeDirectory(tempPath)) {return result;} else {ftp.changeWorkingDirectory(tempPath);}}}}//设置上传文件的类型为二进制类型ftp.setFileType(FTP.BINARY_FILE_TYPE);//上传文件if (!ftp.storeFile(filename, input)) {return result;}input.close();ftp.logout();result = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return result;}/** * Description: 从FTP服务器下载文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */  public static boolean downloadFile(String host, int port, String username, String password, String remotePath,String fileName, String localPath) {boolean result = false;FTPClient ftp = new FTPClient();try {int reply;ftp.connect(host, port);// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器ftp.login(username, password);// 登录reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return result;}ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录FTPFile[] fs = ftp.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) {File localFile = new File(localPath + "/" + ff.getName());OutputStream is = new FileOutputStream(localFile);ftp.retrieveFile(ff.getName(), is);is.close();}}ftp.logout();result = true;} catch (IOException e) {e.printStackTrace();} finally {if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}return result;}/*** 测试* @param args*/public static void main(String[] args) {try {  /* FileInputStream in=new FileInputStream(new File("/Users/Downloads/test.png"));boolean flag = uploadFile("111.231.31.41", 21, "ftp_test", "test0", "/ftp_data/images","", "holle.jpg", in);*/boolean flag = downloadFile("111.231.31.41", 21,  "ftp_test", "testO","/ftp_data/images","test.jpg","/Volumes/H");System.out.println(flag);  } catch (Exception e) {e.printStackTrace();  }  }
}

java实用工具类——使用java代码实现ftp上传下载工具类相关推荐

  1. FTP上传下载工具(FlashFXP) v5.5.0 中文版

    软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...

  2. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...

  3. c#使用FluentFtp实现一行代码实现ftp上传下载等

    一:简介 FluentFTP 是一个完全托管的 .NET 和 .NET Standard 的 FTP 和 FTPS 库,针对速度进行了优化. 它提供了广泛的 FTP 命令.文件上传/下载.SSL/TL ...

  4. ftp下载工具,ftp上传下载工具使用指南,几款好用的ftp客户端软件推荐

    第一款:iis7服务器管理软件 它是一款免费而且专业的ftp多站点管理软件,而且可以实现ftp定时备份的功能.除此之外,它还是一款强大的服务器集成管理器,可以批量管理windows及linux服务器及 ...

  5. JAVA 文件上传下载工具类

    JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...

  6. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

  7. java实现的FTP上传下载客户端

    org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能: 需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFil ...

  8. 华为云OBS文件上传下载工具类

    Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...

  9. ftp. java. jdk_java实现ftp上传下载(jdk1.7以下)

    java实现ftp上传下载(jdk1.7以下)完整代码,复制可用 FTP实现代码: package com.util; import java.io.File; import java.io.File ...

  10. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

最新文章

  1. 学习Docker从小白到入门
  2. java分布式学习路线
  3. datetime模块日期转换和列表sorted排序
  4. figma下载_搬到Figma对我意味着什么
  5. P1047 [NOIP2005 普及组] 校门外的树(python3实现)
  6. Java—CountDownLatch使用详解
  7. 微信公众平台开发者文档
  8. python中文字体奇怪_利用python检查 AS400的中文字问题
  9. MySQL 主主同步配置和主从配置步骤
  10. 微信小程序使用字体图标
  11. 电脑html5播放黑屏,电脑看视频黑屏,教您电脑看视频黑屏有声音怎么办
  12. 工程总承包(EPC)最高投标限价政策解说
  13. MySQL(零基础)详解之DQL
  14. 只有VOB文件也可以制作成DVD——用IfoEdit建立IFO篇(最好的方法)
  15. Kafka安全认证 SASL/PLAINTEXT,账号密码认证
  16. 如何检查MacBook 电池的循环使用次数及健康度?电池续航的方法
  17. python输入hello*3_Python快速上手: hello world
  18. Windows系统设置宽带连接开机自动拨号的方法
  19. python玩转emoji ????(微信又“偷偷”更新了这个表情)
  20. 在DreamSpark上从Microsoft获得免费的学生软件

热门文章

  1. java根号n元素的合并排序算法_根号N段合并排序
  2. php元万亿单位转换,万与亿的换算(万元换成亿元换算器)
  3. Html中的favicon ico
  4. 餐厅经营模拟游戏实战项目
  5. Django博客项目(一)—— 注册和登录页面
  6. EPLAN小知识——如何在费斯托(FESTO)官网下载EPLAN部件
  7. js获取多叉树的广度和深度
  8. 三维立体坐标系 html5,三维坐标系
  9. 经济机器是怎样运行的 -- Ray Dalio
  10. iPhone照片备份与恢复