历史版本2 :自定义上传文件至FTP服务器 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

1. 问题描述编辑

执行完定时任务之后,如果不需要判断结果,将导出文件都上传至ftp,则可直接使用ftp上传附件,但是需要根据执行结果判断是否将该结果文件导出并上传至ftp站点,这是就可以通过自定义附件处理来实现,即定义一个java类文件,在类文件中进行结果判断,符合条件的则上传至ftp服务器,下面讲解怎么在java中实现文件上传至ftp服务器上,至于结果判断的代码这里将不进行讲述

2. 解决方案编辑

2.1 编写类文件
编写java类,继承AbstractOutputFileAction接口,通过下面两个方法实现上传附件至ftp的功能:
第一个方法:getFilesToDealWith(File[] files),主要功能是筛选要处理的文件,参数files是传进来的文件,其中根据所选可能包括报表生成的pdf和excel文件。示例中直接返回传进来的文件,没有进行任何操作,用户可根据需要自行修改编辑。
第二个方法:doFileAction(File[] files),主要功能是实现FTP上传附件的功能,需根据实际情况设置FTP服务器的相关参数。
代码如下:
  1. package com.fr.output;  
  2.   
  3. import java.io.File;  
  4.   
  5. import com.fr.json.JSONException;  
  6. import com.fr.json.JSONObject;  
  7. import com.fr.schedule.output.AbstractOutputFileAction;  
  8. import com.fr.schedule.output.FTPTransmission;  
  9. import com.fr.schedule.output.OutputFileAction;  
  10.   
  11. public class FTPUpload extends AbstractOutputFileAction {  
  12.     @Override  
  13.     public File[] getFilesToDealWith(File[] files) {  
  14.         return files;  
  15.     }  
  16.   
  17.     @Override  
  18.     public void doFileAction(File[] files) {  
  19.         FTPTransmission ftp=new FTPTransmission();  
  20.         ftp.setServerAddress("192.168.100.100");  
  21.         ftp.setPort(21);  
  22.         ftp.setSavePath("test");  
  23.         ftp.setUsername("1");  
  24.         ftp.setPassword("1");  
  25.         try {  
  26.             ftp.doFTP(files);  
  27.         } catch (Exception e) {  
  28.             // TODO Auto-generated catch block  
  29.             e.printStackTrace();  
  30.         }  
  31.           
  32.     }  
  33.   
  34.     @Override  
  35.     public boolean isEmailNotification() {  
  36.         // TODO Auto-generated method stub  
  37.         return false;  
  38.     }  
  39.   
  40.     @Override  
  41.     public OutputFileAction analyzeJSON(JSONObject arg0) {  
  42.         // TODO Auto-generated method stub  
  43.         return null;  
  44.     }  
  45.   
  46.     @Override  
  47.     public JSONObject createJSONConfig() throws JSONException {  
  48.         // TODO Auto-generated method stub  
  49.         return null;  
  50.     }  
  51.   
  52.     @Override  
  53.     public String getJsonTag() {  
  54.         // TODO Auto-generated method stub  
  55.         return null;  
  56.     }  
  57.   
  58. }  
编译类文件,将生成的FTPUpload.class放在%FineReport_home%\WebReport\WEB-INF\classes\com\fr\output文件夹下。
注:类文件放的位置只需要与编写类文件里面的package位置对应即可。
2.2 定时任务
操作过程请参照上一节
2.3 效果查看