zoukankan      html  css  js  c++  java
  • Java使用comms-net jar包完成ftp文件上传进度的检测功能

    本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出!

    准备环境:JDK1.7 OR 1.8、eclipse、ftp服务器(可自行搭建)、comms-net jar包3.3版本的。其余的就不详细列举了。

    1.在现实开发中ftp服务器和项目的部署服务器基本不会是同一台,所以基础springmvc的文件上传进度获取,只能获取到文件的二进制流到达项目后台的进度。对于真实的ftp文件上传进度,需要使用comms-net提供的监听器来实现。

    2.在ftp代码上传前设置监听器。完成文件上传的进度监听,我这边是把进度保存在session中,前端定时获取。上传完成后,把session中的对应值清空。附上核心代码:

    /**
         * 获取文件上传进度
         * @param totalBytes 文件总大小
         */
        public void uploadProgress(long totalBytes){
            CopyStreamAdapter streamListener = new CopyStreamAdapter() {
    
                /**
                 * @param totalBytesTransferred已经上传的字节数
                 */
                @Override
                public void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) {
                    /** 通过计算已经上传大小和总大小的百分比获取上传进度。 */
                   String percent = CalculationUtil.percentCal((int)totalBytesTransferred, (int)totalBytes, 3);
                   if(percent.contains(".")){
                       percent = percent.substring(0, percent.lastIndexOf("."));
                   }
                   HttpSession session = request.getSession();
                   session.setAttribute(session.getId(), percent);
                }
    
             };
             this.client.setCopyStreamListener(streamListener);
        }
  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/duck-ifox/p/7470349.html
Copyright © 2011-2022 走看看