GMS.Core.Upload/ThumbnailService.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using GMS.Framework.Utility;
using System.Threading.Tasks;
using System.Threading;
using GMS.Core.Config;

namespace GMS.Core.Upload
{
    public class ThumbnailService
    {
        public static void HandleImmediateThumbnail(string filePath,Timming timming  = Timming.Immediate)
        {
            //正则从文件路径里匹配出上传的文件夹目录.....
            var m = Regex.Match(filePath, @"^(.*)\\upload\\(.+)\\(day_\d+)\\(\d+)(\.[A-Za-z]+)$", RegexOptions.IgnoreCase);

            if (!m.Success)
                return;

            var root = m.Groups[1].Value;
            var folder = m.Groups[2].Value;
            var subFolder = m.Groups[3].Value;
            var fileName = m.Groups[4].Value;
            var ext = m.Groups[5].Value;

            foreach (var pair in UploadConfigContext.ThumbnailConfigDic
                .Where(t => t.Key.StartsWith(folder.ToLower() + "_") && t.Value.Timming == timming))
            {
                var size = pair.Value;

                var thumbnailFileFolder = string.Format("{0}\\upload\\{1}\\{2}\\thumb",
                    root, folder, subFolder);

                if (!Directory.Exists(thumbnailFileFolder))
                    Directory.CreateDirectory(thumbnailFileFolder);

                var thumbnailFilePath = string.Format("{0}\\upload\\{1}\\{2}\\thumb\\{3}_{4}_{5}{6}",
                    root, folder, subFolder, fileName, size.Width, size.Height, ext);

                ThumbnailHelper.MakeThumbnail(filePath, thumbnailFilePath, size);
            }
        }

        public static void HandlerLazyThumbnail(int intervalMunites)
        {
            var watcher = new FileSystemWatcher(UploadConfigContext.UploadPath);
            watcher.IncludeSubdirectories = true;
            watcher.Created += (s, e) =>
            {
                HandleImmediateThumbnail(e.FullPath, Timming.Lazy);
            };
            watcher.EnableRaisingEvents = true;
            
            while (true)
            {
                HandlerLazyThumbnail();
                GC.Collect();
后面还有 61 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。