using System; using System.Collections.Generic; using System.Text; using EMISOnline.WinService.Common; using System.Configuration; using System.IO; using System.Text.RegularExpressions; using DSOFile; namespace EMISOnline.WinService { public class FtpTimer { public FtpTimer() { } public void CheckFiles() { Log.Info(this.GetType().ToString(), "Start checking..."); //获取已经上传成功的文件 List overFiles = UploadOverFiles(); //获取所有可以转换的文件 List lists = FileHelper.GetAllFiles(Config.FtpPath,Config.FtpFileType); foreach (FileInfo file in lists) { string Comments = FileHelper.GetFilePropertiesComments(file.FullName); if (string.IsNullOrEmpty(Comments)) Comments = ""; //已经标识为上传完成的文件不在进行检查了。 if (Comments.IndexOf("UploadOver") >= 0) continue; bool isUpLoadOver = overFiles.Contains(file.FullName.ToLower()); Log.Info(this.GetType().ToString(), "检查到文件:" + file.FullName + " 是否上传成功:" + isUpLoadOver.ToString()); //如果文件已经上传成功,修改文件备注为上传成功,后续不在检查该文件是否上传成功。 //这样FTP文件过多的时候会提高性能。 //在FTP权限中需要,禁止用户删除、修改、移动该文件。 if (isUpLoadOver) { FileHelper.SaveFilePropertiesComments(file.FullName, "UploadOver"); //通知教学平台有这样的一个文件已经上传成功,可以进行MP4播放。 //m3u8的播放模式需要等待m3u8转换时序来完成转换 string mp4Url = Config.FTPServer + file.FullName.Replace(Config.FtpPath, "").Replace("\\", "/"); M3u8Timer.SaveFtpFile(file.FullName, "",mp4Url, "", file.Name, 1); } else { //通知教学平台有这样的一个文件正在上传 M3u8Timer.SaveFtpFile(file.FullName, "", "", "", file.Name, 0); } } } public List UploadOverFiles() { List lines = FileHelper.ReadTxt(Config.ServUFile); List rtn = new List(); foreach (string line in lines) { //[4] Tue 13Dec16 15:43:14 - (004137) Received file c:\web\mvcapp2\ftpmp4\install cmd.txt successfully (1.23 Kb/sec - 115 bytes) Match match = Regex.Match(line, Config.ServURegex); if (match.Success) { if (rtn.Contains(match.Groups[1].Value)) continue; rtn.Add(match.Groups[1].Value); //Log.Info("UploadOverFiles", match.Groups[1].Value); } } return rtn; } } }