我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实现文件上传到ftp服务器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java实现文件上传到ftp服务器

一、ftp简介

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。

FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。

1.1工作流程

在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据

1.2工作模式

FTP支持两种模式:Standard (PORT方式,主动方式),Passive (PASV,被动方式)

1.3传输方式

FTP的传输有两种方式:ASCII、二进制

二、windows开启ftp服务

在自己的电脑上可以开启一个ftp服务用于测试。

打开控制面板—>程序—>启动或关闭windows功能

找到互联网信息服务勾选✔其中的ftp服务器,web管理,万维网服务。

系统就会安装IIS服务管理器了,安装过程可能需要等待几分钟。

回到电脑桌面,右击“计算机”,点击 管理,进入计算机管理界面。在这里,我们就可以看到刚刚添加的IIS服务,接下来的操作就像我们在VPS主机上添加网站差不多的操作步骤了。选中IIS服务——>网站——>右键添加FTP站点

设置ftp基本信息。路径为远程连接的工作路径

选取本机的IP地址,SSL如果不涉密可以选无。

这里权限先这样设置之后再修改,点击完成即可。

保存后在此后即可看到添加的ftp服务。可以这样开启多个。

注意:

要想通过java程序连接FTP在这里我新建了一个FTP的用户,新建一个用户ftptest,密码:123456,如下所示

这里注意一定要把√取消掉确定完成新建,之后修改FTP服务器设置,添加这个特定用户。

点击创建的ftp名称—>ftp身份验证—>修改身份认证,禁止匿名身份

返回最开始的页面,添加刚才创建的用户,如果创建用户对勾选着可能添加不成功。

输入刚才新建的用户名和密码,完成

如何测试刚才新建的用户是否有效嘞有好多种方法常用的是CMD命令行和下面介绍的这种

打开我的电脑在最上面输入

ftp://+FTP之前设置的IP地址

我的是ftp://192.168.10.11/回车

输入用户和密码即可登录

注意:如果输入后弹出FTP文件夹错误,需要查看一下防火墙是否放行FTP服务器

解决方式:

打开防火墙,点击允许应用或功能通过Windows Defender防火墙

找到FTP服务器并勾选,然后点击确定

三、java连接ftp

org.apache.commons.net提供了对FTP的开发,引入以下依赖

    commons-net    commons-net    3.9.0

3.1ftp工具类

连接ftp服务

@Slf4jpublic class FtpClient {      private static String FTP_IP;      private static Integer FTP_PORT;      private static String FTP_USER;      private static String FTP_PASSWORD;      private static String FTP_PATH;      private static String FTP_DRIVELETTER;   private static FTPClient ftpClient;   static {      try {         // 根据该类的class文件获取到yaml文件         Yaml yaml = new Yaml();         URL resource = FtpClient.class.getClassLoader().getResource("application-dev.yml");         assert resource != null;         // 把yaml文件加载到对象中         Object obj = yaml.load(new FileInputStream(resource.getFile()));         // 解析对象中的属性并赋值         JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(obj));         JSONObject ftp = jsonObject.getObject("fanhai", JSONObject.class).getObject("ftp", JSONObject.class);         FTP_IP = String.valueOf(ftp.get("ip"));         FTP_PORT = Integer.valueOf(String.valueOf(ftp.get("port")));         FTP_USER = String.valueOf(ftp.get("username"));         FTP_PASSWORD = String.valueOf(ftp.get("password"));      } catch (Exception e) {         e.printStackTrace();      }   }   public static FTPClient getFtpConnection() {      ftpClient = new FTPClient();      try {         //连接         ftpClient.connect(FtpClient.FTP_IP, FtpClient.FTP_PORT);         //设置编码         ftpClient.setControlEncoding("UTF-8");         //设置传输文件类型         ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);         //登录         ftpClient.login(FtpClient.FTP_USER, FtpClient.FTP_PASSWORD);         if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {            log.info("==============未连接到FTP,用户名或密码错误=================");            //拒绝连接            ftpClient.disconnect();         } else {            log.info("==============连接到FTP成功=================");         }      } catch (SocketException e) {         e.printStackTrace();         log.info("==============FTP的IP地址错误==============");      } catch (IOException e) {         e.printStackTrace();         log.info("==============FTP的端口错误==============");      }      return ftpClient;   }   public static void closeConnect() {      log.warn("关闭ftp服务器");      try {         if (ftpClient != null) {            ftpClient.logout();            ftpClient.disconnect();         }      } catch (Exception e) {         e.printStackTrace();      }   }}

ftp工具类,进行文件的上传、下载操作

public class FtpUtils {      public static boolean uploadFile(String ftpPath, String uploadFileName, InputStream input) {      boolean issuccess = false;      FTPClient ftpClient = null;      try {         ftpClient = FtpClient.getFtpConnection();         //切换到工作目录         if (!ftpClient.changeWorkingDirectory(ftpPath)) {            ftpClient.changeWorkingDirectory("/");            String[] dirs = ftpPath.split("/");            for (String dir : dirs) {               ftpClient.makeDirectory(dir);               ftpClient.changeWorkingDirectory(dir);            }         }         ftpClient.enterLocalPassiveMode();//工作模式被动         //文件写入 远程文件名;输入流         boolean storeFile = ftpClient.storeFile(uploadFileName, input);         if (!storeFile) {            return issuccess;         }         input.close();         ftpClient.logout();         issuccess = true;      } catch (IOException e) {         e.printStackTrace();      } finally {         if (ftpClient.isConnected()) {            try {               ftpClient.disconnect();            } catch (IOException ioe) {            }         }      }      return issuccess;   }   private String inputStreamToString(InputStream inputStream) {      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));      StringBuffer stringBuffer = new StringBuffer();      String oneLine = "";      try {         while ((oneLine = bufferedReader.readLine()) != null) {            stringBuffer.append(oneLine);         }         return stringBuffer.toString();      } catch (IOException e) {         e.printStackTrace();      }      return null;   }}

来源地址:https://blog.csdn.net/weixin_44486583/article/details/130319858

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实现文件上传到ftp服务器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java怎么实现上传文件到FTP

这篇“java怎么实现上传文件到FTP”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java怎么实现上传文件到FTP”文章吧
2023-07-02

Java如何实现FTP文件上传

这篇文章给大家分享的是有关Java如何实现FTP文件上传的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、配置FTP文件服务器以Ubuntu为例FTP两种模式简介PORT(主动模式)第一步FTP客户端首先随机选择
2023-06-15

java怎么实现上传文件到服务器

Java文件上传Javaweb应用程序可以通过使用Servlet、SpringMVC或第三方库实现文件上传。Servlet方法涉及手动处理文件流和保存,而SpringMVC提供简化的支持。第三方库进一步简化了上传过程,提供了多部分表单数据支持和文件验证功能。遵循最佳实践,例如文件类型验证和安全文件保存,对于确保上传过程的安全性、可靠性和效率至关重要。
java怎么实现上传文件到服务器
2024-04-12

怎么上传ftp文件到云服务器

要将文件上传到云服务器,你需要使用一个FTP客户端来执行上传操作。以下是一个基本的步骤:1. 安装一个FTP客户端,比如FileZilla(免费软件)或CuteFTP(商业软件)。2. 打开FTP客户端并登录到你的云服务器。你需要提供服务器
2023-09-22

怎么上传ftp文件到云服务器

将FTP文件上传到云服务器的步骤连接到云服务器后,通过FTP客户端软件浏览云服务器文件系统,将本地文件拖放到目标文件夹中上传。监控上传进度,并检查文件完整性。提示:使用SFTP,压缩文件,备份数据,并排除故障。
怎么上传ftp文件到云服务器
2024-04-09

Shell脚本实现上传zip压缩文件到FTP服务器

# /bin/bash# creator:lihuibin# date : 2014-03-10 16:45# desc : upload file to ftphosts="192.168.56.100"port=21user=testp
2022-06-04

node ftp怎么上传文件夹到服务器

今天小编给大家分享一下node ftp怎么上传文件夹到服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。完整代码示例如下:
2023-07-05

java实现ftp文件上传下载功能

本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;
2023-05-31

利用java如何实现上传ftp文件

今天就跟大家聊聊有关利用java如何实现上传ftp文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。准备条件:java实现ftp上传用到了commons-net-3.3.jar包首先
2023-05-31

Java怎么实现文件压缩与上传FTP

这篇文章主要介绍“Java怎么实现文件压缩与上传FTP”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么实现文件压缩与上传FTP”文章能帮助大家解决问题。Java文件压缩与上传FTP文件压缩
2023-07-02

编程热搜

目录