执行完定时任务之后,如果不需要判断结果,将导出文件都上传至ftp,则可直接使用ftp上传附件,但是需要根据执行结果判断是否将该结果文件导出并上传至ftp站点,这是就可以通过自定义附件处理来实现,即定义一个java类文件,在类文件中进行结果判断,符合条件的则上传至ftp服务器,下面通过java报表插件FineReport来讲解怎么在java中实现文件上传至ftp服务器上。
前期准备工作(包括相关工具或所使用的原料等)java报表插件FineReport7.1.1大小:148.2M 适用平台:windows/linux 详细的操作方法或具体步骤
编写类文件
编写java类,继承AbstractOutputFileAction接口,通过下面两个方法实现上传附件至ftp的功能:
第一个方法:getFilesToDealWith(File[] files),主要功能是筛选要处理的文件,参数files是传进来的文件,其中根据所选可能包括报表生成的pdf和excel文件。示例中直接返回传进来的文件,没有进行任何操作,用户可根据需要自行修改编辑。
第二个方法:doFileAction(File[] files),主要功能是实现FTP上传附件的功能,需根据实际情况设置FTP服务器的相关参数。
代码如下:
package com.fr.output;
import java.io.File;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.schedule.output.AbstractOutputFileAction;
import com.fr.schedule.output.FTPTransmission;
import com.fr.schedule.output.OutputFileAction;
public class FTPUpload extends AbstractOutputFileAction {
@Override
public File[] getFilesToDealWith(File[] files) {
return files;
}
@Override
public void doFileAction(File[] files) {
FTPTransmission ftp=new FTPTransmission();
ftp.setServerAddress("192.168.100.100");
ftp.setPort(21);
ftp.setSavePath("test");
ftp.setUsername("1");
ftp.setPassword("1");
try {
ftp.doFTP(files);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean isEmailNotification() {
// TODO Auto-generated method stub
return false;
}
@Override
public OutputFileAction analyzeJSON(JSONObject arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public JSONObject createJSONConfig() throws JSONException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getJsonTag() {
// TODO Auto-generated method stub
return null;
}
}
编译类文件,将生成的FTPUpload.class放在%FineReport_home%\WebReport\WEB-INF\classes\com\fr\output文件夹下。
注:类文件放的位置只需要与编写类文件里面的package位置对应即可。
定时任务
在附件类型后面勾选excel,word,pdf,则可将定时任务结果导出为excel,word以及pdf格式,然后勾选下面的是否自定义附件处理,并在类名处填写正确类名,点击完成即可。如下图:

效果查看

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
