自定义上传文件至磁盘

编辑
  • 文档创建者:文档助手1
  • 浏览次数:6292次
  • 编辑次数:22次
  • 最近更新:susie 于 2019-04-15
  • 1. 描述

    在定时任务完成之后,有时候需要将文件导出至自定义位置,而不是系统默认位置%FR%WebReport\WEB-INF\schedule,这时候就可以通过自定义附件来处理,通过自定义类文件修改文件导出的位置。

    2. 示例

    导出excel和pdf,并把生成的对应文件保存在指定路径中去,本例中的路径是放在C盘test文件夹下。

    3. 实现步骤

    3.1 编写类文件
    定义一个OutputExcel类文件,实现OutputActionHandler<OutputClass>接口,具体代码如下:
    package com.fr.output;
    
    import com.fr.io.utils.ResourceIOUtils;
    import com.fr.schedule.base.bean.output.OutputClass;
    import com.fr.schedule.base.constant.ScheduleConstants;
    import com.fr.schedule.feature.output.OutputActionHandler;
    import com.fr.stable.ArrayUtils;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Map;
    
    /**
     * Created by Zed on 2018/9/11.
     */
    public class OutputExcel extends OutputActionHandler<OutputClass> {
    
        @Override
        public void doAction(OutputClass action, Map<String, Object> map) throws Exception {
            String[] files = (String[]) map.get(ScheduleConstants.OUTPUT_FILES);
            if (ArrayUtils.isNotEmpty(files)) {
                for (String path : files) {
                    output(path);
                }
            }
        }
    
        private void output(String path) {
    
            String realPath = ResourceIOUtils.getRealPath(path);
            File file = new File(realPath);
            String newPath = "C:/test/" + file.getName();
            BufferedInputStream in = null;
            OutputStream out = null;
            try {
                out = new BufferedOutputStream(new FileOutputStream(new File(newPath)));
                in = new BufferedInputStream(new FileInputStream(realPath));
                byte[] ba = new byte[in.available()];
                in.read(ba);
                out.write(ba);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                    if (out != null) {
                        out.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    编译类文件,将生成的OutputExcel.class放在%FineReport_home%\webapps\webroot\WEB-INF\classes\com\fr\output文件夹下。
    注:类文件放的位置只需要与编写类文件里面的package位置对应即可。
    3.2 定时任务
    参照定时生成日报配置定时任务,到第三步—本地文件的时候,在附件存档类型后面勾选excel,word,pdf,则可将定时任务结果导出为excel,word以及pdf格式如下图:

    然后到第四步——文件处理的时候,勾选“自定义附件处理”,切换到自定义附件处理标签页,选择上面的class文件,点击提交即可,如下图:

    3.3 效果查看
    在C盘test文件夹下面可以查看到不同格式的导出文件,如下图:



    附件列表


    主题: 决策系统
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]