/// <summary> /// 如果目录不存在,创建目录 /// </summary> /// <param name="dirName"></param> /// <param name="connection"></param> private void MakeSureDirExist(string dirName, FTPConnection connection) { if (!connection.DirectoryExists(dirName)) { connection.CreateDirectory(dirName); } }
/// <summary> /// 连接FTP服务器 /// </summary> /// <param name="ftpInfo"></param> /// <returns></returns> public static bool ConnectFtpServer(FtpConfigEntity ftpInfo) { try { using (FTPConnection ftpConn = new FTPConnection { ServerAddress = ftpInfo.ServerAddress, //ServerDirectory = ftpInfo.ServerDirectory, UserName = ftpInfo.UserName, Password = ftpInfo.UserPassword, CommandEncoding = Encoding.GetEncoding("GBK") }) { ftpConn.Connect(); if (!ftpConn.DirectoryExists(ftpInfo.ServerDirectory)) { throw new Exception($"FTP服务器连接成功,但FTP服务器不存在目录名[{ftpInfo.ServerDirectory}]"); } } return(true); } catch (Exception ex) { string errMsg = $"FTP服务器连接失败,FTP信息[{JsonObj<FtpConfigEntity>.ToJson(ftpInfo)}],异常[{ ex.Message}]"; LogUtil.WriteLog(errMsg); throw new Exception(errMsg); } }
public Boolean DeletePack(int v) { // 输出递交包,到本地集成环境处理,需要使用ftp连接 FTPConnection ftp = MAConf.instance.Configs[ProductId].ftp; FtpConf fc = MAConf.instance.Configs[ProductId].fc; // 强制重新连接,防止时间长了就断掉了 if (ftp.IsConnected == false) { try { ftp.Connect(); } catch (Exception e) { log.WriteErrorLog("连接FTP服务器失败,错误信息:" + e.Message); } } if (ftp.DirectoryExists(RemoteDir) == false) { System.Windows.Forms.MessageBox.Show("FTP路径" + RemoteDir + "不存在!"); return(false); } //ftp.ChangeWorkingDirectory(fc.ServerDir); ftp.DeleteFile(RemoteFile); return(true); }
static bool FtpOpen() { // create connection try { ftpcon = new FTPConnection(); ftpcon.UserName = Config.ftpsettings.FtpUserName; ftpcon.Password = Config.ftpsettings.FtpPassword; ftpcon.ServerAddress = Config.ftpsettings.FtpServerAddress; ftpcon.ServerPort = int.Parse(Config.ftpsettings.FtpServerPort); ftpcon.TransferNotifyInterval = (long)4096; ftp = new FtpLib(ref ftpcon); } catch (Exception) { Console.WriteLine(Strings.Get("FtpBadConfig")); Console.ReadKey(); return(false); } // try to connect try { ftp.LogIn(); } catch (Exception) { Console.WriteLine(Strings.Get("FtpNoConnection")); Console.ReadKey(); return(false); } // check if folder exists if (!Config.ftpsettings.FtpServerFolder.StartsWith("/")) { Config.ftpsettings.FtpServerFolder = "/" + Config.ftpsettings.FtpServerFolder; } if (!ftpcon.DirectoryExists(Config.ftpsettings.FtpServerFolder)) { Console.WriteLine(Strings.Get("FtpBadFolder") + Config.ftpsettings.FtpServerFolder); Console.ReadKey(); return(false); } return(true); }
public static void CreateDirectory(IEnumerable <string> folderList) { var ftpConnect = new FTPConnection(); try { ftpConnect.ServerAddress = System.Configuration.ConfigurationManager.AppSettings["HostGoDaddy"].ToString(); ftpConnect.ServerPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["PortGoDaddy"].ToString()); ftpConnect.UserName = System.Configuration.ConfigurationManager.AppSettings["UsernameGoDaddy"].ToString(); ftpConnect.Password = System.Configuration.ConfigurationManager.AppSettings["PasswordGoDaddy"].ToString(); ftpConnect.Connect(); ftpConnect.ChangeWorkingDirectory("/public_html"); foreach (var tmp in folderList) { if (!ftpConnect.DirectoryExists(tmp)) { ftpConnect.CreateDirectory(tmp); } } } catch (Exception ex) { throw new Exception("Exception is " + ex.Message); } finally { ftpConnect.Close(); //ftpConnect.Dispose(); } }
// 获取FTP递交信息 public Boolean QueryFTP() { log.WriteInfoLog("查询FTP目录信息..."); // 输出递交包,到本地集成环境处理,需要使用ftp连接 FTPConnection ftp = MAConf.instance.Configs[ProductId].ftp; FtpConf fc = MAConf.instance.Configs[ProductId].fc; string s; // 强制重新连接,防止时间长了就断掉了 if (ftp.IsConnected == false) { try { ftp.Connect(); } catch (Exception e) { log.WriteErrorLog("连接FTP服务器失败,错误信息:" + e.Message); return(false); } } // 取递交版本信息,确认要输出哪个版本的压缩包,确保只刷出最大的版本 // 这个地方,应该是如果存在集成的文件夹,就刷出集成的文件夹, // 对于V1,是全部都需要集成,对于Vn(n>1),只集成变动的部分就可以了 if (ftp.DirectoryExists(RemoteDir) == false) { System.Windows.Forms.MessageBox.Show("FTP路径" + RemoteDir + "不存在!"); return(false); } ftp.ChangeWorkingDirectory(fc.ServerDir); // 不使用 true 列举不出目录,只显示文件,很奇怪 //string[] files = ftp.GetFiles(fc.ServerDir + ap.CommitPath, true); string[] files = ftp.GetFiles(RemoteDir); log.WriteInfoLog("查询FTP目录信息...完成"); #region 确定修改单基本属性 // 检查是否存在集成*的文件夹 // 获取当前的版本信息,先标定版本信息 SubmitL.Clear(); ScmL.Clear(); ScmSrc.Clear(); foreach (string f in files) //查找子目录 { // 跳过 src-V*.rar 之类的东东 if (f.IndexOf("集成-src-V") >= 0 || f.IndexOf("集成-Src-V") >= 0) { ScmSrc.Add(f); } else if (f.IndexOf(MainNo) < 0) { continue; } else if (f.IndexOf("集成") == 0) { ScmL.Add(f); } else { SubmitL.Add(f); } } string currVerFile = string.Empty;// 20111123054-国金短信-李景杰-20120117-V3.rar if (SubmitL.Count > 0) { SubmitL.Sort(); s = SubmitL[SubmitL.Count - 1].ToString(); currVerFile = s; // 取递交版本号 // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13 s = s.Substring(0, s.LastIndexOf('.')); SubmitVer = int.Parse(s.Substring(s.LastIndexOf('V') + 1)); } else { SubmitVer = 0; } // 生成一些上次集成的变量,需要把上次的覆盖到本次来 if (ScmL.Count > 1) // 重复集成 { ScmL.Sort(); s = ScmL[ScmL.Count - 1].ToString(); // 取递交版本号 // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13 s = s.Substring(0, s.LastIndexOf('.')); ScmVer = int.Parse(s.Substring(s.LastIndexOf('V') + 1)); ScmedVer = ScmVer; // 如果存在对应的src文件夹,一并删除掉 if (ScmVer == SubmitVer) { ScmL.RemoveAt(ScmL.Count - 1); if (ScmSrc.Count > 1) { ScmSrc.Sort(); if (ScmSrc.IndexOf("集成-src-V" + ScmVer + ".rar") >= 0 || ScmSrc.IndexOf("集成-Src-V" + ScmVer + ".rar") >= 0) { ScmSrc.RemoveAt(ScmSrc.Count - 1); } } } } string dir = Path.GetFileNameWithoutExtension(currVerFile); //AmendDir = LocalDir + "\\" + dir; SCMAmendDir = Path.Combine(LocalDir, "集成-" + dir); ScmVer = SubmitVer; LocalFile = Path.Combine(LocalDir, currVerFile); RemoteFile = LocalFile.Replace(LocalDir, RemoteDir); SCMLocalFile = Path.Combine(SCMAmendDir, "集成-" + currVerFile); SCMRemoteFile = SCMLocalFile.Replace(SCMAmendDir, RemoteDir); SrcRar = Path.Combine(SCMAmendDir, "src-V" + ScmVer.ToString() + ".rar"); SCMSrcRar = Path.Combine(SCMAmendDir, "集成-src-V" + ScmVer.ToString() + ".rar"); SCMRemoteSrcRar = SCMSrcRar.Replace(SCMAmendDir, RemoteDir); if (ScmL.Count > 0) { ScmL.Sort(); s = ScmL[ScmL.Count - 1].ToString(); dir = Path.GetFileNameWithoutExtension(s); // 上次数据 SCMLastAmendDir = Path.Combine(LocalDir, dir); SCMLastLocalFile = Path.Combine(SCMLastAmendDir, s); ScmLastRemoteFile = Path.Combine(RemoteDir, s); // 取递交版本号 // 20111207012-委托管理-高虎-20120116-V13.rar --> 20111207012-委托管理-高虎-20120116-V13 -> 13 s = s.Substring(0, s.LastIndexOf('.')); SCMLastVer = int.Parse(s.Substring(s.LastIndexOf('V') + 1)); SCMLastLocalSrcRar = Path.Combine(SCMLastAmendDir, "集成-src-V" + SCMLastVer.ToString() + ".rar"); ScmLastRemoteSrcRar = Path.Combine(RemoteDir, "集成-src-V" + SCMLastVer.ToString() + ".rar"); } else { SCMLastVer = 0; } if (ScmedVer == 0) { ScmedVer = SCMLastVer; } if (ScmSrc.Count > 0) { ScmSrc.Sort(); s = ScmSrc[ScmSrc.Count - 1].ToString(); SCMLastLocalSrcRar = Path.Combine(SCMLastAmendDir, s); ScmLastRemoteSrcRar = Path.Combine(RemoteDir, s); } // 决定是新集成还是修复集成还是重新集成 if (ScmVer == 0 || (ScmVer == 1 && SubmitVer == 1)) // 第一次集成 { scmtype = ScmType.NewScm; } else if (SCMLastVer <= SubmitVer) // 重新集成也当成修复集成 { scmtype = ScmType.BugScm; // 修复集成 } #endregion return(true); }
public bool CheckIfDirectoryExist(string path) { return(connection.DirectoryExists(path)); }
/// <summary> /// 判断 FTP 服务器上指定的目录是否存在 /// </summary> /// <param name="directoryName"></param> /// <returns></returns> public bool DirectoryExists(string directoryName) { return(m_pFtp.DirectoryExists("/" + directoryName.TrimStart('/'))); }