历史版本11 :自定义上传文件至FTP服务器 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述编辑
执行完定时任务之后,如果不需要判断结果,将导出文件都上传至ftp,则可直接使用ftp上传附件,但是需要根据执行结果判断是否将该结果文件导出并上传至ftp站点,这是就可以通过自定义附件处理来实现,即定义一个java类文件,在类文件中进行结果判断,符合条件的则上传至ftp服务器,下面讲解怎么在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.194");
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 定时任务

操作过程请参照上一节。
2.3 效果查看
