using System; using System.Threading; using System.IO; using Aliyun.OSS; using Library; using System.Text.RegularExpressions; namespace MySystem { public class OssHelper { public readonly static OssHelper Instance = new OssHelper(); private OssHelper() { } public void Start()//启动 { Thread thread = new Thread(threadStart); thread.IsBackground = true; thread.Start(); } public void Add(string data) { function.WritePage("/OSSTempFiles/", function.MD532(Guid.NewGuid().ToString()) + ".txt", data); } private void threadStart() { var client = new OssClient(AppConfig.Oss.endpoint, AppConfig.Oss.key, AppConfig.Oss.secret); while (true) { string dataFilePath = function.getPath("/OSSTempFiles/"); DirectoryInfo TheFolder = new DirectoryInfo(dataFilePath); if (TheFolder.Exists) { //遍历文件 if (TheFolder.GetFiles().Length > 0) { try { foreach (FileInfo NextFile in TheFolder.GetFiles()) { string FileFullName = dataFilePath + NextFile.Name; string data = function.ReadInstance("/OSSTempFiles/" + NextFile.Name); ScanQueue(data, FileFullName, client); } } catch (Exception ex) { function.WriteLog(ex.ToString(), "OSS上传队列异常"); } } } //没有任务,休息1秒钟 Thread.Sleep(1000); } } //要执行的方法 public void ScanQueue(string data, string FileFullName) { var client = new OssClient(AppConfig.Oss.endpoint, AppConfig.Oss.key, AppConfig.Oss.secret); ScanQueue(data, FileFullName, client); } private void ScanQueue(string data, string FileFullName, OssClient client) { // 上传文件。 string localFile = function.getPath(data); string filePath = data.TrimStart('/'); if (!data.StartsWith(AppConfig.Oss.PathName)) { filePath = AppConfig.Oss.PathName + data; } var result = client.PutObject(AppConfig.Oss.bucketName, filePath, localFile, new ObjectMetadata() { ExpirationTime = DateTime.Parse("2050-12-31 23:59:59") }); if (!string.IsNullOrEmpty(result.ETag)) { if (result.ETag.Length == 32) { if (File.Exists(localFile)) { File.Delete(localFile); } } } if (File.Exists(FileFullName)) { File.Delete(FileFullName); } } /// /// 解析编辑器中的图片(oss) /// /// /// public string CheckOSSPic(string content) { if (string.IsNullOrEmpty(content)) { content = ""; } if (AppConfig.Oss.OssStatus) { MatchCollection MC = Regex.Matches(content, ""); foreach (Match match in MC) { string imgstr = match.Value; Match submatch = Regex.Match(imgstr, "src=\".*?\""); if (submatch.Success) { string src = submatch.Value.Replace("src=\"", "").Replace("\"", ""); if (!src.StartsWith("http")) { content = content.Replace(src, AppConfig.Oss.SourceHost + src); } } } } return content; } } }