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


    1.关于FTP协议

           FTP(文件传输协议)TCP/IP协议组中的协议之一,作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP协议的全称为File Transfer Protocol,FTP的目标是提高文件的共享性和可靠高效地传送数据。

    2.FTP的工作模式

             作为一个文件传输协议,是一个客户端/服务器系统。它的任务就是从一台计算机将文件传送到另一台计算机。既然要在不同的电脑上高效的传输文件,就必须在两台电脑之间建立起联系,那我们可以让一台电脑充当服务器端,另一台电脑充当客户端,两者有着相同的网络端口名称,并且处在同一个局域网内。

              FTP的组成部分:FTP客户端、FTP服务器(存储文件)默认使用TCP端口中的20(用于传输数据)和21(用于传输控制信息)两个端口。

    FTP工作方式支持两种模式

    Standard( Port方式,主动方式)和Passive(PASV,被动方式)。

    (1)Porl(主动方式)

                 客户端连接成功后,主动告诉服务器数据连接的端口。

    (2)PASV(被动模式)

                  客户端连接成功后,在进行数据传输时临时连接服务器的20端口,利用20端口进行数据的传输。

             

    3.具体的JAVA代码参考案例

          在应用市场中有很多开启电脑服务器的应用程序,大家可以选择一个中意的,并且设置一个用户,方便客户端的连接,并设置用户权限。

       (1)上传Excel文件至FTP服务器

    1. // 上传Excel文件至FTP服务器的uploadToFTP方法
    2. //传入表格的列头部分和数据部分
    3. public boolean uploadToFTP(Vector<String> colNameVector ,
    4. VectorObject>> dataVector) {
    5. //生成一个临时的Excel文件
    6. File tempExcelFile = new File("D:\\AAAAA\\" + System.currentTimeMillis() +".xlsx");
    7. //将数据写入该Excel文件中
    8. exportExcel(colNameVector, dataVector, tempExcelFile);
    9. //上传
    10. FTPClient ftpclient = new FTPClient();
    11. try (FileInputStream in = new FileInputStream(tempExcelFile)) {
    12. //服务器的IP地址,网络接口和登录账号密码
    13. ftpclient.connect("***.***.***..***",21);
    14. boolean isLogin = ftpclient.login("admin", "admin");
    15. //提示登录成功
    16. System.out.println("登陆成功:" + isLogin);
    17. ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
    18. ftpclient.storeFile(tempExcelFile.getName(), in);
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. return false;
    22. }finally {
    23. try {
    24. ftpclient.disconnect();
    25. } catch (IOException e) {
    26. e.printStackTrace();
    27. return false;
    28. }
    29. }
    30. return true;
    31. }

    (2)实现FTP的下载功能的downloadFileFromFTP方法:

    1. public boolean downloadFileFromFTP(String excelFiles) {
    2. File uploadDir = new File("D:\\games");
    3. if(!uploadDir.exists()) {
    4. uploadDir.mkdir();
    5. }
    6. FTPClient ftpclient = new FTPClient();
    7. try (FileOutputStream out = new FileOutputStream("D:\\FilesDownLoad\\" + excelFiles)) {
    8. ftpclient.connect("***.***.***..***",21);
    9. boolean isLogin = ftpclient.login("admin", "admin");
    10. System.out.println("登陆成功:" + isLogin);
    11. ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
    12. boolean isretrieve = ftpclient.retrieveFile(excelFiles, out);
    13. return isretrieve;
    14. } catch (IOException e) {
    15. e.printStackTrace();
    16. }finally {
    17. try {
    18. ftpclient.disconnect();
    19. } catch (IOException e) {
    20. e.printStackTrace();
    21. return false;
    22. }
    23. }
    24. return false;
    25. }

  • 相关阅读:
    牛客项目(五)-使用kafka实现发送系统通知
    郑州轻工业大学OJ合集(C语言)【正在整理】
    Java“牵手”阿里巴巴商品列表页数据采集+商品价格数据排序,商品销量排序数据,阿里巴巴API接口采集方法
    查找的三种常用算法
    【考前冲刺整理】20220812
    gazebo中添加动态障碍物
    [网鼎杯 2020 青龙组]bang 题解
    [附源码]JAVA毕业设计课程在线反馈系统(系统+LW)
    java数据结构与算法刷题-----LeetCode35:搜索插入位置
    机器学习——强化学习状态值函数V和动作值函数Q的个人思考
  • 原文地址:https://blog.csdn.net/weixin_54535063/article/details/126194671