123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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<string> overFiles = UploadOverFiles();
- //获取所有可以转换的文件
- List<FileInfo> 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<string> UploadOverFiles()
- {
- List<string> lines = FileHelper.ReadTxt(Config.ServUFile);
- List<string> rtn = new List<string>();
- 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;
- }
- }
- }
|