/**
* 检查结果记录比较多,存储于独立的数据库服务器
* @param mapping
* @param form
* @param request
* @param response
* @return
*/
public ActionForward checkResultDown(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws JSchException {
String downDate = request.getParameter("downDate");
String selOrg = "";
String downFile = "";
try {
selOrg= URLDecoder.decode(request.getParameter("selOrg"),"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//服务器上存在的文件名称规则:机构代码_日期
downFile = selOrg.split("_")[0]+"_"+downDate;
FTPClient ftpClient = new FTPClient();
try {
String hosts = Constant.getStPara("hosts");
String user = Constant.getStPara("user2");
String pwd = Constant.getStPara("pwd");
String tmpPath = Constant.getStPara("tmpResultPath");
File f = new File(tmpPath);
if(!f.exists()){
f.mkdirs();
}
ftpClient.connect(hosts);
ftpClient.setControlEncoding("UTF-8");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");
//FTP登录后用户会有自己初始化配置的目录
ftpClient.login(user, pwd);
FTPFile[] fs = ftpClient.listFiles();
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
FileOutputStream fl = null;
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
String fileName = ff.getName();
if (fileName.startsWith(selOrg)) {
ServletOutputStream outputStream = response.getOutputStream();
// 这个就就是弹出下载对话框的关键代码
response.setHeader("Content-disposition","attachment;filename="+ fileName);
fl = new FileOutputStream(tmpPath+fileName);
ftpClient.retrieveFile(fileName, fl);
//将FTP服务器上的txt文件保存到本地
fl.flush();
fl.close();
BufferedReader in_=new BufferedReader(new FileReader(tmpPath+fileName));
String line;
int count=1;
while((line=in_.readLine())!=null){
if(count==1){
outputStream.println("规则ID,检测日期,规则说明,规则组ID,检查专题,系统来源,检查表,检查列,检查维度,维度细分,机构号,检查总数,通过数,失败数,出错率,通过率");
}
outputStream.println(line);
count++;
}
in_.close();
outputStream.flush();
outputStream.close();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
return null;
}