Преглед изворни кода

内网访问oss,转base64

lcl пре 2 година
родитељ
комит
661bd7e2f8
2 измењених фајлова са 164 додато и 2 уклоњено
  1. 162 0
      AppStart/OssTestHelper.cs
  2. 2 2
      Controllers/HomeController.cs

+ 162 - 0
AppStart/OssTestHelper.cs

@@ -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;
+        }
+    }
+}

+ 2 - 2
Controllers/HomeController.cs

@@ -176,9 +176,9 @@ namespace MySystem.Controllers
             return html;
         }
     
-        public string test()
+        public string test(string p)
         {
-            return DecryptString("tI2uU8zQp54=", "0535YANTAIJIANWANZHONG9912321232");
+            return OssTestHelper.Instance.GetUrlBase64(p);
         }
 
         private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();