public async Task <ErrMessage> DEL_LENOVOSFTP() { ErrMessage rETURN = new ErrMessage(); await Task.Run(() => { SFTPHelper sftp = new SFTPHelper("bjmft.lenovo.com", "22", "Ex_Ontim_P", "Ex_Ontim_P"); string remotePath = "/856_Appendix/out/tmp"; bool bl = true; bool bl1 = true; Dictionary <string, string> dic = sftp.GetFileListFileName(remotePath, ".txt", ref bl); if (bl) { dic = dic.OrderBy(r => r.Value).ToDictionary(r => r.Key, r => r.Value); foreach (KeyValuePair <string, string> kvp in dic) { string extenname = kvp.Key; sftp.Delete(remotePath + "/" + extenname); } } Dictionary <string, string> dic1 = sftp.GetFileListFileName(remotePath, ".trigger", ref bl1); if (bl1) { dic1 = dic1.OrderBy(r => r.Value).ToDictionary(r => r.Key, r => r.Value); foreach (KeyValuePair <string, string> kvp in dic1) { string extenname = kvp.Key; sftp.Delete(remotePath + "/" + extenname); } } }); rETURN.Err = "执行完成"; rETURN.success = true; return(rETURN); }
///**************************************************************************************************** /// 函 数 名:doBackup /// 输入参数:无 /// 返回值 :无 /// 功能描述: /// <summary> /// 进行文件备份,即从sftp指定目录上下载文件到本地并删除sftp上的相应文件 /// </summary> /// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// 创 建 人:罗嗣扬 创建日期:2017-08-24 /// 修 改 人:罗嗣扬 修改日期:2017-08-25 ///**************************************************************************************************** public void doBackup() { //访问配置文件并获取默认配置 string sftp_ip = System.Configuration.ConfigurationManager.AppSettings["sftp_ip"]; string sftp_port = System.Configuration.ConfigurationManager.AppSettings["sftp_port"]; string sftp_username = System.Configuration.ConfigurationManager.AppSettings["sftp_username"]; string sftp_password = System.Configuration.ConfigurationManager.AppSettings["sftp_password"]; string sftp_path = System.Configuration.ConfigurationManager.AppSettings["sftp_path"]; string local_path = System.Configuration.ConfigurationManager.AppSettings["local_path"]; //创建一个sftp类对象 SFTPHelper sftpObj = null; try { //给sftp类对象赋值 sftpObj = new SFTPHelper(sftp_ip, sftp_port, sftp_username, sftp_password); //连接sftp服务器 sftpObj.Connect(); //获取指定sftp的文件列表 Array fileList = sftpObj.GetFileList(sftp_path).ToArray(); //创建一个代表不带路径的文件名的字符串 string shortFileName = ""; //遍历已经获取的sftp文件列表,逐个从sftp下载文件到本地并删除sftp上的相应文件 int i = 0; for (i = 0; i < fileList.Length; i++) { try { shortFileName = fileList.GetValue(i).ToString(); sftpObj.Get(sftp_path + shortFileName, local_path + shortFileName); sftpObj.Delete(sftp_path + shortFileName); } catch (Exception ex) { continue; } } log.Info("Ftp文件下载成功。下载文件数:" + i.ToString()); } catch (Exception ex) { log.Error("Ftp文件下载出现异常。", ex); } finally { if (sftpObj != null && sftpObj.Connected) { //断开sftp连接 sftpObj.Disconnect(); } } }
public override bool Business() { try { SFTPHelper fTPHelper = new SFTPHelper(SFTPIP, SFTPort, SFTPUser, SFTPPwd); //读取文件列表 string[] receivefiles = Directory.GetFiles(SFTPConstants.ReceiveFilePath); LogHelper.WriteLog(typeof(string), "开始处理文件", LogHelper.LogLevel.INFO); if (receivefiles.Length > 0) { //TextHelper txthelper = new TextHelper(); for (int i = 0; i < receivefiles.Length; i++) { LogModel log = new LogModel(); log.SourceFileName = receivefiles[i]; FileInfo file = new FileInfo(receivefiles[i]); string filename = file.Name; string result = "";//解析的错误提示 string externumber = ""; try { List <string> txtlists = TextHelper.ReadTextFileToList(receivefiles[i]);//读取成list //没有数据 if (txtlists.Count() > 0) { //可以处理多个接口文件 switch (txtlists[0].ToString().Substring(0, 9).Trim()) { case "WMSSKU": //PUMA推给我们的 log.Type = "WMSSKU"; result = new ProductAccessor().AddProduct(txtlists, out externumber); break; case "WMSASN": //PUMA推给我们的 入库单 log.Type = "WMSASN"; result = new ASNAccessor().GetInbound_ASNHD(txtlists, out externumber); break; case "WMSORD": //PUMA推给我们的 出库单 log.Type = "WMSORD"; result = new ASNAccessor().GetInbound_ORDHD(txtlists, out externumber); break; default: log.Type = ""; result = "未能从文件中识别出对应的接口"; break; } if (result == "200") { //解析成功,移动到success文件夹 log.ToFileName = SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename; log.ResultDesc = "解析成功"; log.Externumber = externumber; log.Flag = "Y"; if (log.Type == "WMSSKU") { fTPHelper.Delete(OUT_MASTER + "//" + filename); } else { fTPHelper.Delete(OUT_TRANSACTION + "//" + filename); } } else { if (log.Type != "") { if (result.Contains("数据库插入失败")) { log.ToFileName = "";// SFTPConstants.SuccessFilePath + @"\" + log.Type + @"\" + filename; log.ResultDesc = "解析失败:" + result; log.Externumber = externumber; log.Flag = "E"; } else { log.ToFileName = SFTPConstants.FaildFilePath + @"\" + log.Type + @"\" + filename;//移动到解析失败文件夹 log.ResultDesc = "解析失败:" + result; log.Externumber = externumber; log.Flag = "N"; } } else { log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.ResultDesc = "解析失败:" + result; log.Externumber = externumber; log.Flag = "N"; } } } else { log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.Flag = "N"; log.ResultDesc = "解析失败:文档中无数据"; } } catch (Exception ex) { //报错了放到error文件 log.ToFileName = SFTPConstants.ErrorFilePath + @"\" + filename; log.Flag = "N"; log.ResultDesc = "解析报错:" + ex.Message.ToString(); } if (log.Flag == "E") {//数据库失败再解析一次 } else { LocalFileHelper.MoveToCover(log.SourceFileName, log.ToFileName); } } } } catch (Exception ex) { LogHelper.WriteLog(typeof(string), "处理文件错误" + ex.ToString(), LogHelper.LogLevel.INFO); //throw; } return(true); }