|
@@ -0,0 +1,162 @@
|
|
|
|
|
+using System;
|
|
|
|
|
+using System.Threading;
|
|
|
|
|
+using System.Linq;
|
|
|
|
|
+using System.IO;
|
|
|
|
|
+using Aliyun.OSS;
|
|
|
|
|
+using Aliyun.OSS.Common;
|
|
|
|
|
+using Library;
|
|
|
|
|
+using System.Text.RegularExpressions;
|
|
|
|
|
+using MySystem.Models;
|
|
|
|
|
+
|
|
|
|
|
+namespace MySystem
|
|
|
|
|
+{
|
|
|
|
|
+ public class OssTestHelper
|
|
|
|
|
+ {
|
|
|
|
|
+ string key = "LTAI5tAp9ASZtq4wYzuXfeer"; //阿里云AccessKey ID
|
|
|
|
|
+ string secret = "N0o6TwowU8r4aeNWoefMnnus9Q2saW"; //阿里云Access Key Secret
|
|
|
|
|
+ public string PathName = ConfigurationManager.AppSettings["Database"].ToString();
|
|
|
|
|
+ // public string endpoint = "oss-cn-chengdu.aliyuncs.com"; //endpoint
|
|
|
|
|
+ public string endpoint = "oss-cn-chengdu-internal.aliyuncs.com"; //endpoint
|
|
|
|
|
+ public string bucketName = "kexiaoshuang";
|
|
|
|
|
+ public string SourceHost = ConfigurationManager.AppSettings["OssHost"].ToString();
|
|
|
|
|
+ public bool OssStatus = true;
|
|
|
|
|
+ public readonly static OssTestHelper Instance = new OssTestHelper();
|
|
|
|
|
+ private OssTestHelper()
|
|
|
|
|
+ {
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ 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(endpoint, key, 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)
|
|
|
|
|
+ {
|
|
|
|
|
+ // SystemSet set = new WebCMSEntities().SystemSet.FirstOrDefault() ?? new SystemSet();
|
|
|
|
|
+ // if (set.UploadOss == 1)
|
|
|
|
|
+ if(OssStatus)
|
|
|
|
|
+ {
|
|
|
|
|
+ var client = new OssClient(endpoint, key, secret);
|
|
|
|
|
+ ScanQueue(data, FileFullName, client);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ private void ScanQueue(string data, string FileFullName, OssClient client)
|
|
|
|
|
+ {
|
|
|
|
|
+ // 上传文件。
|
|
|
|
|
+ string localFile = function.getPath(PathName + data);
|
|
|
|
|
+ string filePath = data.TrimStart('/');
|
|
|
|
|
+ if (!data.StartsWith(PathName))
|
|
|
|
|
+ {
|
|
|
|
|
+ filePath = PathName + data;
|
|
|
|
|
+ }
|
|
|
|
|
+ var result = client.PutObject(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);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public string GetUrlBase64(string url)
|
|
|
|
|
+ {
|
|
|
|
|
+ var client = new OssClient(endpoint, key, secret);
|
|
|
|
|
+ var obj = client.GetObject(bucketName, url);
|
|
|
|
|
+ Stream stream = obj.Content;
|
|
|
|
|
+ byte[] bytes;
|
|
|
|
|
+ using (var memoryStream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ stream.CopyTo(memoryStream);
|
|
|
|
|
+ bytes = memoryStream.ToArray();
|
|
|
|
|
+ }
|
|
|
|
|
+ string base64 = Convert.ToBase64String(bytes);
|
|
|
|
|
+ return base64;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 解析编辑器中的图片(oss)
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="content"></param>
|
|
|
|
|
+ /// <returns></returns>
|
|
|
|
|
+ public string CheckOSSPic(string content)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (string.IsNullOrEmpty(content))
|
|
|
|
|
+ {
|
|
|
|
|
+ content = "";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (OssStatus)
|
|
|
|
|
+ {
|
|
|
|
|
+ MatchCollection MC = Regex.Matches(content, "<img.*?>");
|
|
|
|
|
+ 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, OssHelper.Instance.SourceHost + src);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return content;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|