• 基于FTP协议的文件上传与下载


            FTP协议全称叫做文件传输协议,它用于在Internet上的控制文件的双向传输。在FTP的使用当中,经常会提到两个概念,“下载”和“上传”。下载文件就是从远程主机拷贝文件到自己的计算机中;上传就是从自己的计算机中拷贝到远程计算机,本篇文章将客户端和服务器同时使用一台主机进行操作。

            使用FTP时,必须先登录,在FTP服务器上获得相应的权限后,才能进行上传和下载文件。也就是说,要想同哪一台 计算机传送文件,就必须具有哪一台计算机的适当授权。TCP/IP协议中,FTP标准命令TCP 端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受 操作系统的限制。

            在进行使用FTP服务器来进行文件传输前,要先对FTP服务器的IP地址,端口,以及用户的权限进行设置。以我目前设置为例进行下边的操作。

             在通过Java来进行连接FTP服务器之前先准备好相应的jar包(配置过maven中央仓库请忽略)

    commons-net-3.6.jar下载地址:Central Repository: commons-net/commons-net/3.6

    一、上传文件至FTP服务

    (1)创建FTP客户端对象

    FTPClient ftpClient = new FTPClient();

    (2) 连接FTP服务器

    1. // 传入我们的IP地址以及服务器端口号
    2. ftpClient.connect("192.168.137.1", 21);

    (3)登录FTP服务器

    1. // 输入我们在FTP服务器中配置好的用户名和密码
    2. ftpClient.login("admin", "admin");

    (4)为确保我们的文件能够上传成功,我们在FTP服务器中切换上传目录

    1. if (!ftpClient.changeWorkingDirectory("upload")) {
    2. // 创建目录
    3. ftpClient.makeDirectory("upload");
    4. // 切换
    5. ftpClient.changeWorkingDirectory("upload");
    6. }

    (5)设置文件类型

    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

    (6)上传文件

    1. // 要上传的文件
    2. File tempExcelFile = new File("D:\\IOTest\\tempFile\\data.xlsx");
    3. // 通过输入流包装
    4. FileInputStream in = new FileInputStream(tempExcelFile)
    5. // 使用storeFIle方法上传
    6. ftpClient.storeFile(tempExcelFile.getName(), in);

    最终我们可以看到在FTP服务器设置的文件夹内可以查看到刚才上传的文件

     二、从FTP服务器上下载文件

    下载和上传类似,同样的是先进行连接、登录、设置文件类型,最后下载

    具体代码实现如下:

    1. // 创建FTP客户端对象
    2. FTPClient ftpClient = new FTPClient();
    3. // 连接FTP服务器
    4. ftpClient.connect("192.168.137.1", 21);
    5. // 登录FTP服务器
    6. ftpClient.login("admin", "admin");
    7. // 设置文件类型
    8. ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    9. // 设置要下载的文件名称
    10. String fileName = "java.jpg";
    11. // 创建输出流,传入要下载的位置
    12. FileOutputStream out = new FileOutputStream("D:\\IOTest\\load\\" + 13 + ".jpg");
    13. // 下载(调用retrieveFile()方法实现下载)
    14. ftpClient.retrieveFile(fileName, out);

    最终,我们能看到文件已经成功的下载到本地了

     

  • 相关阅读:
    【算法题】 605. 种花问题
    java毕业设计——基于java+JSP+MyEclipse的网上订餐系统设计与实现——网上订餐系统
    ts-面向对象
    sqlserver 查询数据显示行号
    【Spring Boot 】Spring Boot 统一功能处理
    Java 8新特性:DateTime、Lambda、Stream的强大功能解析
    Netty——ByteBuffer的内部结构
    [Java安全]—Interceptor内存马
    仓库管理流程详解(附作业流程图)
    NC56 自定义查询的维护
  • 原文地址:https://blog.csdn.net/qq_17845335/article/details/126194757