广告
返回顶部
首页 > 资讯 > 服务器 >Java实现文件上传到ftp服务器
  • 234
分享到

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

服务器java网络 2023-09-02 12:09:46 234人浏览 安东尼
摘要

一、ftp简介 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, tcp 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和

一、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

--结束END--

本文标题: Java实现文件上传到ftp服务器

本文链接: https://www.lsjlt.com/news/390711.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Java实现文件上传到ftp服务器
    一、ftp简介 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和...
    99+
    2023-09-02
    服务器 java 网络
  • java实现上传文件到FTP
    本文实例为大家分享了java实现上传文件到FTP的具体代码,供大家参考,具体内容如下 需求说明:将指定文件上传到FTP,上传成功后修改文件名。 获取文件名及路径(这里是从数据库获取,...
    99+
    2022-11-13
  • Java将文件上传到ftp服务器
    本文实例为大家分享了Java将文件上传到ftp服务器的具体代码,供大家参考,具体内容如下 首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器; —&...
    99+
    2022-11-13
  • Java实现FTP上传到服务器
    简介 FTP是TCP/IP协议组中的协议之一,包括两个组成部分,一是FTP服务端,二是FTP客户端,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP...
    99+
    2022-11-13
  • java怎么实现上传文件到FTP
    这篇“java怎么实现上传文件到FTP”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java怎么实现上传文件到FTP”文章吧...
    99+
    2023-07-02
  • Java实现FTP文件上传
    目录一、配置FTP文件服务器 FTP两种模式简介 PORT(主动模式) Passive(被动模式) 1、安装vsftpd 2、配置vsftpd 3、重启启动服务 4、登录二、java...
    99+
    2022-11-12
  • java实现文件上传到服务器
    本文实例为大家分享了java实现文件上传到服务器的具体代码,供大家参考,具体内容如下 1、运行jar包,发送post请求 public static void main(String...
    99+
    2022-11-13
  • 怎么上传ftp文件到云服务器
    要将文件上传到云服务器,你需要使用一个FTP客户端来执行上传操作。以下是一个基本的步骤:1. 安装一个FTP客户端,比如FileZi...
    99+
    2023-09-22
    云服务器
  • Shell脚本实现上传zip压缩文件到FTP服务器
    # /bin/bash # creator:lihuibin # date : 2014-03-10 16:45 # desc : upload file to ftp hosts="192.16...
    99+
    2022-06-04
    压缩文件 脚本 上传
  • node ftp怎么上传文件夹到服务器
    今天小编给大家分享一下node ftp怎么上传文件夹到服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。完整代码...
    99+
    2023-07-05
  • Java如何实现FTP文件上传
    这篇文章给大家分享的是有关Java如何实现FTP文件上传的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、配置FTP文件服务器以Ubuntu为例FTP两种模式简介PORT(主动模式)第一步FTP客户端首先随机选择...
    99+
    2023-06-15
  • Java 上传文件到MinIO服务器上
    一、MinIO配置 主界面: 2.创建桶的文件路径 你可以设置任意想要配置的路径  3.管理桶权限 这里Prefix写 * 是为了匹配所有请求路径 Access: readonly就可以通过url访问图片了。 二、SpringBoo...
    99+
    2023-10-02
    java spring boot okhttp
  • Java从ftp服务器上传与下载文件
    一、背景 业务需要从ftp服务器上上传、下载、删除文件等功能,通过查阅资料及手动敲打代码,实现了操作ftp的基本功能,有需求的小伙伴可以看看具体的实现过程。 二、ftp介绍 摘自百度百科:文件传输协议(File Transfer ...
    99+
    2023-08-31
    java spring boot spring 服务器 Powered by 金山文档
  • 如何用FTP上传文件到阿里云服务器
    在进行网站开发或者文件传输时,FTP(文件传输协议)是一个非常重要的工具。尤其在阿里云服务器上,使用FTP上传文件更是必不可少的操作。本文将详细介绍如何用FTP上传文件到阿里云服务器。 步骤一:连接阿里云服务器 首先,你需要通过阿里云的控制...
    99+
    2023-11-17
    阿里 如何用 上传文件
  • 利用java如何实现上传ftp文件
    今天就跟大家聊聊有关利用java如何实现上传ftp文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。准备条件:java实现ftp上传用到了commons-net-3.3.jar包首先...
    99+
    2023-05-31
    java ftp上传 ava
  • java实现ftp文件上传下载功能
    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;...
    99+
    2023-05-31
    ftp 上传 下载
  • 如何使用阿里云FTP上传文件到服务器
    阿里云FTP是阿里云提供的文件传输协议服务,用户可以通过FTP协议,将本地文件上传到阿里云服务器,或者从阿里云服务器下载文件到本地。本文将详细介绍一下如何使用阿里云FTP上传文件到服务器。 步骤一:注册和登录阿里云账号 首先,你需要在阿里云...
    99+
    2023-11-18
    阿里 如何使用 上传文件
  • Shell中怎么上传zip压缩文件到FTP服务器
    本篇文章为大家展示了Shell中怎么上传zip压缩文件到FTP服务器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下:# /bin/bash# creator:lihuib...
    99+
    2023-06-09
  • Java实现以form-data形式文件上传到服务器
    Java实现以form-data形式文件上传到服务器 package com.joolun.cloud.mall.common.util;import com.alibaba.fastjson.JSO...
    99+
    2023-08-31
    java 服务器 apache
  • Java如何实现文件压缩与上传FTP
    目录Java文件压缩与上传FTP文件压缩Ftp下载与上传文件Java程序FTP上传文件依赖架包 commons-net-3.4.jarJava文件压缩与上传FTP 文件压缩 1.po...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作