懒得勤快 2 years ago
parent
commit
5f6239355e

+ 2 - 1
Masuit.Tools.Abstractions/Extensions/BaseType/StreamExtensions.cs

@@ -28,9 +28,10 @@ namespace Masuit.Tools
                 return pooledMemoryStream;
             }
 
-            stream.Seek(0, SeekOrigin.Begin);
+            stream.Position = 0;
             var ms = new PooledMemoryStream();
             stream.CopyTo(ms);
+            stream.Position = 0;
             return ms;
         }
 

+ 24 - 15
Masuit.Tools.Abstractions/Files/FileDetector/FileSignatureDetector.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using Masuit.Tools.Systems;
 
 namespace Masuit.Tools.Files.FileDetector;
 
@@ -52,28 +53,36 @@ public static class FileSignatureDetector
 
     public static IDetector DetectFiletype(this Stream stream)
     {
-        string pre = null;
-        IDetector foundDetector = new NoneDetector();
-        while (true)
+        if (stream.CanSeek)
         {
-            bool found = false;
-            foreach (var detector in Detectors.Where(d => d.Precondition == pre))
+            string pre = null;
+            IDetector foundDetector = new NoneDetector();
+            while (true)
             {
-                stream.Position = 0;
-                if (detector.Detect(stream))
+                bool found = false;
+                foreach (var detector in Detectors.Where(d => d.Precondition == pre))
+                {
+                    stream.Position = 0;
+                    if (detector.Detect(stream))
+                    {
+                        found = true;
+                        foundDetector = detector;
+                        pre = detector.Extension;
+                        break;
+                    }
+                }
+                if (!found)
                 {
-                    found = true;
-                    foundDetector = detector;
-                    pre = detector.Extension;
                     break;
                 }
             }
-            if (!found)
-            {
-                break;
-            }
+
+            stream.Position = 0;
+            return foundDetector;
         }
 
-        return foundDetector;
+        using var ms = new PooledMemoryStream();
+        stream.CopyTo(ms);
+        return DetectFiletype(ms);
     }
 }

+ 1 - 1
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -3,7 +3,7 @@
         <TargetFrameworks>netstandard2.0;netstandard2.1;net461;net5;net6;net7</TargetFrameworks>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>2.5.9.9</Version>
+        <Version>2.6</Version>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
         <Copyright>懒得勤快,长空X</Copyright>

+ 11 - 1
Masuit.Tools.Abstractions/Validator/IsEmailAttribute.cs

@@ -51,7 +51,17 @@ namespace Masuit.Tools.Core.Validator
         /// <returns></returns>
         public override bool IsValid(object value)
         {
-            if (value == null && !AllowEmpty)
+            if (AllowEmpty)
+            {
+                switch (value)
+                {
+                    case null:
+                    case string s when string.IsNullOrEmpty(s):
+                        return true;
+                }
+            }
+
+            if (value == null)
             {
                 ErrorMessage = _customMessage ?? "邮箱不能为空!";
                 return false;

+ 11 - 1
Masuit.Tools.Abstractions/Validator/IsPhoneAttribute.cs

@@ -30,7 +30,17 @@ namespace Masuit.Tools.Core.Validator
         /// <returns></returns>
         public override bool IsValid(object value)
         {
-            if (value is null && !AllowEmpty)
+            if (AllowEmpty)
+            {
+                switch (value)
+                {
+                    case null:
+                    case string s when string.IsNullOrEmpty(s):
+                        return true;
+                }
+            }
+
+            if (value is null)
             {
                 ErrorMessage = _customMessage ?? "手机号码不能为空";
                 return false;

+ 1 - 1
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -17,7 +17,7 @@
         <Product>Masuit.Tools.AspNetCore</Product>
         <PackageId>Masuit.Tools.AspNetCore</PackageId>
         <LangVersion>latest</LangVersion>
-        <Version>1.1.9.9</Version>
+        <Version>1.2</Version>
         <RepositoryType></RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <FileVersion>1.1.9</FileVersion>

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -6,7 +6,7 @@
 官网教程:https://ldqk.org/55
 github:https://github.com/ldqk/Masuit.Tools
         </Description>
-        <Version>2.5.9.9</Version>
+        <Version>2.6</Version>
         <Copyright>Copyright © 懒得勤快</Copyright>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
         <PackageTags>Masuit.Tools,工具库,Utility,Crypt,Extensions</PackageTags>

+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -2,7 +2,7 @@
 <package>
   <metadata>
     <id>Masuit.Tools.Net45</id>
-    <version>2.5.9.8</version>
+    <version>2.6</version>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>

+ 1 - 1
Masuit.Tools/package.nuspec

@@ -2,7 +2,7 @@
 <package>
   <metadata>
     <id>Masuit.Tools.Net</id>
-    <version>2.5.9.8</version>
+    <version>2.6</version>
     <title>Masuit.Tools</title>
     <authors>懒得勤快</authors>
     <owners>masuit.com</owners>