1. 新增POM依赖

<!--文件上传-->
<dependency><groupId>commons-fileupload</groupId>       <artifactId>commons-fileupload</artifactId><version>1.3.3</version>
</dependency><!--FTPClient-->
<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.1</version>
</dependency>

2. 封装代码

2.1 FtpUtil

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;@Slf4j
public class FtpUtil {private String host;private Integer port;private String username;private String password;private FTPClient ftpClient;private FtpUtil() {this.host = "127.0.0.1";this.port = 21;this.username = "root";this.password = "root";}/*** 上传图片到FTP服务器** @param file* @return*/public static boolean uploadImg(File file) {return new FtpUtil().uploadFile("/images", file);}/*** 删除FTP服务器上的单个图片** @param imgName* @return*/public static boolean deleteImg(String imgName) {return new FtpUtil().deleteFile("/images", imgName);}/*** 删除多个文件** @param imgNames*/public static void deleteImgs(List<String> imgNames) {new FtpUtil().deleteFiles("/images", imgNames);}/*** 上传文件到FTP服务器** @param path* @param file* @return*/private boolean uploadFile(String path, File file) {try {if (connect()) {FileInputStream fileInputStream;ftpClient.changeWorkingDirectory(path);     // 切换工作目录ftpClient.setBufferSize(2048);ftpClient.setControlEncoding("UTF-8");ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);      //设置文件格式为二进制格式ftpClient.enterLocalPassiveMode();fileInputStream = new FileInputStream(file);ftpClient.storeFile(file.getName(), fileInputStream);ftpClient.disconnect();fileInputStream.close();log.info("文件 {} 上传成功", file.getName());return true;}} catch (Exception e) {e.printStackTrace();}return false;}/*** 删除FTP服务器中的文件** @param path* @param fileName* @return*/private boolean deleteFile(String path, String fileName) {boolean uploadResult = false;try {if (connect()) {ftpClient.changeWorkingDirectory(path);if (ftpClient.deleteFile(fileName)) {log.info("文件 {} 删除成功", fileName);uploadResult = true;} else {log.info("文件 {} 删除失败", fileName);}ftpClient.disconnect();}} catch (IOException e) {e.printStackTrace();}return uploadResult;}/*** 删除多个文件* @param path* @param imgNames* @return*/private Integer deleteFiles(String path, List<String> imgNames) {int count = 0;try {if (connect()) {ftpClient.changeWorkingDirectory(path);for (String s : imgNames) {if (ftpClient.deleteFile(s)) {log.info("文件 {} 删除成功", s);count++;} else {log.info("文件 {} 删除失败", s);}}log.info("共删除 {} 张图片", count);ftpClient.disconnect();}} catch (IOException e) {log.error("连接FTP服务器失败");}return count;}/*** 连接到FTP服务器** @return*/private boolean connect() {boolean connectResult = false;try {ftpClient = new FTPClient();ftpClient.connect(host, port);connectResult = ftpClient.login(username, password);} catch (IOException e) {e.printStackTrace();}return connectResult;}}

2.2 Controller测试

@PostMapping("/upload/image")public String upload(@RequestParam("file") MultipartFile file) throws IOException {// 现将文件暂存到该路径下String sysPath = "./src/main/resources/static/images/";String fileName = file.getOriginalFilename();File image = new File(sysPath + fileName);FileUtils.copyInputStreamToFile(file.getInputStream(), image);boolean result = FtpUtil.uploadImg(image);// 删除项目中暂存的图片文件image.delete();if (result) {return "文件上传成功";}return "文件上传失败";}

3.搭建FTP服务器

可参考:搭建FTP服务器

使用FTPClient封装FtpUtil相关推荐

  1. java ftpclient quit_ftp中ftpClient类的API

    org.apache.commons.NET.ftpClass FTPClient类FTPClient org.apache.commons.net.ftp.FTPClientorg.apache.c ...

  2. java富文本编辑器KindEditor

    在页面写一个编辑框: <textarea name="content" class="form-control" id="content&quo ...

  3. java远程操作ftp服务器上传下载

    注意里面的文件编码,连接过程编码与服务器编码不一致的话会导致上传中文乱码情况. import java.io.File; import java.io.FileInputStream; import ...

  4. java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...

    windows环境下使用 public static void dowmloadFtpWindos(String fileUuid, HttpServletRequest request,HttpSe ...

  5. JAVA实现FTP文件传输

    一.FTP介绍 FTP是File Transfer Protocol(文件传输协议)的英文简称,即文件协议.用于Internet上的控制文件的双向传输.同时,它是一个应用程序(Application) ...

  6. sftp,ftp文件下载

    一.sftp工具类 package com.ztesoft.iotcmp.util;import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch ...

  7. 跨境电商在海关报关中 FTP 文件的上传和下载

    海关报关步骤: 1.跨境电商中,海关报关中报关文件的上传和下载通过 FTP 的形式执行. 2.跨境电商中每笔订单都是需要报关,将订单的相关参数生成 xml 格式的文件,g根据海关加密报关需求,将文件加 ...

  8. 多线程实现ftp 文件下载

    1 需求: 某个接口的纪录在ftp 服务器上,以类别/日期/时间.来存放文件,而一天可能会产生几百个文件,需要下载文件进行保存 问题: 1. 这个时候如果同时,要拿几个类别,某个时间段的数据,就要疯狂 ...

  9. java ftp 上传文件 进度条_java FTP上传文件(进度条显示进度)

    java实现FTP上传有2种方式,一种是org.apache.commons.net.ftp.FTPClient这个jar包,一种是sun.net.ftp.FtpClient.不知道为什么,在使用前一 ...

最新文章

  1. 关于laravel发布到github'丢失'vendor目录或其他文件的解决
  2. 窗口最小化之后没有图标
  3. Replicate(网络复制),ActorRole(角色),Ownership(所有权)以及RPC(远程调用)等等...
  4. 用ab进行POST,GET压力测试,且定义header及json的内容
  5. Java程序停止 mq通道未关闭_java – 如何在MQ上停止丢失消息
  6. 在Openstack上创建并访问Kubernetes集群
  7. POJ 1981 Circle and Points 单位圆覆盖
  8. Centos 安装配置 Dynamips
  9. 360浏览器html在哪儿,360浏览器的收藏夹在哪_如何找到360浏览器收藏夹路径位置...
  10. not found for libcrypto
  11. 雅虎新频道Buzz截图,Digg竞争者?
  12. 面试字节跳动后台开发(实习)
  13. Aircrack-ng破解无线WIFI密码
  14. 揭秘 | 互联网6大主流盈利模式(内附美团外卖、摩拜案例)
  15. 【信奥赛一本通】 1413:确定进制(详细代码)
  16. 广州市车联网先导区LTE-V2X 车载直连通讯设备技术规范
  17. c++primer学习笔记
  18. jquery字符串相等判断
  19. 如何在linux上使用QQ(在终端上使用qq) mojo-qq
  20. 融合与创新:数据堂骨龄标注工具为医生赋能

热门文章

  1. IO流原理及流的分类
  2. vue项目中汉字转拼音
  3. 如何知晓代理IP所属城市?
  4. 阿里那些吊炸天的开源工具,你知道几个?
  5. kdj超卖_为什么在KDJ指标的超卖区间不能卖出股票
  6. 提升工作效率的软件及网站(不断更新中)
  7. Photoshop如何改变背景底色并调整照片尺寸和图像大小
  8. origin8.0 绘图学习笔记
  9. Python-打印指定范围内的全部回文素数(高教社,《Python编程基础及应用》习题8-7) (10分) 回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。
  10. 带大家读python数据分析一书(三)