自定义上传文件至 FTP 服务器

  • 文档创建者:文档助手1
  • 编辑次数:15次
  • 最近更新:Wendy123456 于 2020-03-06
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.0

    1.2 问题描述

    定时任务执行后,根据执行结果判断是否将该结果文件导出并上传到 ftp 站点,应该怎么实现呢?

    1.3 解决思路

    • 定义一个 Java 类文件,在类文件中进行结果判断,符合条件的则上传到 ftp 服务器。

    • 在定时任务「文件处理」步骤中,勾选自定义附件处理,选择自定义的类文件。

    2. 操作步骤

    2.1 编写类文件

    编写 Java 类,继承 OutputActionHandler<OutputClass>接口,如下所示:

    package com.fr.output;
    import com.fr.schedule.base.bean.output.OutputClass;
    import com.fr.schedule.base.bean.output.OutputFtp;
    import com.fr.schedule.base.constant.ScheduleConstants;
    import com.fr.schedule.feature.output.FTPHandler;
    import com.fr.schedule.feature.output.OutputActionHandler;
    import com.fr.stable.Filter;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    public class FTPUpload extends OutputActionHandler<OutputClass> {
        private FTPHandler handler = new FTPHandler();
        @Override
        public void doAction(OutputClass action, Map<String, Object> map) throws Exception {
            OutputFtp ftp = new OutputFtp();
            ftp.setServerAddress("192.168.1.45");
            ftp.setPort(String.valueOf(21));
            ftp.setSavePath("test");
            ftp.setUsername("admin");
            ftp.setPassword("123456");
            action(ftp, map, new Filter<String>() {
                @Override
                public boolean accept(String s) {
                    // TODO: 2018/8/23  过滤
                    return true;
                }
            });
        }
        private void action(OutputFtp ftp, Map<String, Object> map, Filter<String> filter) throws Exception {
            String[] files = (String[]) map.get(ScheduleConstants.OUTPUT_FILES);
            List<String> fileList = new ArrayList<String>();
            for (String file : files) {
                if (filter.accept(file)) {
                    fileList.add(file);
                }
            }
            map.put(ScheduleConstants.OUTPUT_FILES, fileList.toArray(new String[0]));
            handler.doAction(ftp, map);
        }
    }

    编译类文件,将生成的FTPUpload.class放在%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\output文件夹下。

    注: 类文件放的位置只需与编写类文件里的「package」位置对应即可。

    注:ftp 的信息根据用户实际的 ftp 服务器填写。

    2.2 定时任务

    注:「调度对象」步骤中,该方法不支持在「调度结果」右侧勾选除通用结果外,根据默认用户组内的用户单独生成结果

    1)定时调度任务步骤请参考 自定义上传文件至磁盘 中的 2.2.1 章、2.2.2 章、2.2.3 章、2.2.4 章。

    2)点击下一步,勾选自定义附件处理,选择本文 2.1 章节中的FTPUpload.class文件,点击保存。如下图所示:

    1583465752606769.png

    2.3 效果查看

    如下图所示:

    1583473090765144.png

    附件列表


    主题: 数据决策系统
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!