懒得勤快 2 年之前
父节点
当前提交
00d7da5e5e

+ 1 - 0
Masuit.Tools.Abstractions/Strings/ValidateCode.cs

@@ -95,6 +95,7 @@ namespace Masuit.Tools.Strings
             //保存图片数据
             var stream = new PooledMemoryStream();
             image.Save(stream, WebpFormat.Instance);
+            stream.Position = 0;
             return stream;
         }
 

+ 14 - 9
Masuit.Tools.AspNetCore/AspNetCore/Extensions/ControllerExtensions.cs

@@ -57,39 +57,44 @@ public static class ControllerExtensions
     /// 可断点续传和多线程下载的FileResult
     /// </summary>
     /// <param name="controller"></param>
-    /// <param name="fileStream">文件二进制流</param>
+    /// <param name="stream">文件二进制流</param>
     /// <param name="contentType">Content-Type</param>
     /// <param name="fileDownloadName">下载的文件名</param>
     /// <returns></returns>
-    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream fileStream, string contentType, string fileDownloadName)
+    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream stream, string contentType, string fileDownloadName)
     {
-        return ResumeFile(controller, fileStream, contentType, fileDownloadName, null);
+        return ResumeFile(controller, stream, contentType, fileDownloadName, null);
     }
 
     /// <summary>
     /// 可断点续传和多线程下载的FileResult
     /// </summary>
     /// <param name="controller"></param>
-    /// <param name="fileStream">文件二进制流</param>
+    /// <param name="stream">文件二进制流</param>
     /// <param name="fileDownloadName">下载的文件名</param>
     /// <returns></returns>
-    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream fileStream, string fileDownloadName)
+    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream stream, string fileDownloadName)
     {
-        return ResumeFile(controller, fileStream, MimeMapper.GetMimeFromPath(fileDownloadName), fileDownloadName, null);
+        return ResumeFile(controller, stream, MimeMapper.GetMimeFromPath(fileDownloadName), fileDownloadName, null);
     }
 
     /// <summary>
     /// 可断点续传和多线程下载的FileResult
     /// </summary>
     /// <param name="controller"></param>
-    /// <param name="fileStream">文件二进制流</param>
+    /// <param name="stream">文件二进制流</param>
     /// <param name="contentType">Content-Type</param>
     /// <param name="fileDownloadName">下载的文件名</param>
     /// <param name="etag">ETag</param>
     /// <returns></returns>
-    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream fileStream, string contentType, string fileDownloadName, string etag)
+    public static ResumeFileStreamResult ResumeFile(this ControllerBase controller, Stream stream, string contentType, string fileDownloadName, string etag)
     {
-        return new ResumeFileStreamResult(fileStream, contentType, etag)
+        if (stream.CanSeek)
+        {
+            stream.Seek(0, SeekOrigin.Begin);
+        }
+
+        return new ResumeFileStreamResult(stream, contentType, etag)
         {
             FileDownloadName = fileDownloadName
         };

+ 9 - 4
Masuit.Tools.AspNetCore/AspNetCore/ResumeFileResult/ResumeFileStreamResult.cs

@@ -12,21 +12,26 @@ public class ResumeFileStreamResult : FileStreamResult, IResumeFileResult
     /// <summary>
     /// 构造函数
     /// </summary>
-    /// <param name="fileStream">文件流</param>
+    /// <param name="stream">文件流</param>
     /// <param name="contentType">Content-Type</param>
     /// <param name="etag">ETag</param>
-    public ResumeFileStreamResult(Stream fileStream, string contentType, string etag = null) : this(fileStream, MediaTypeHeaderValue.Parse(contentType), !string.IsNullOrEmpty(etag) ? EntityTagHeaderValue.Parse(etag) : null)
+    public ResumeFileStreamResult(Stream stream, string contentType, string etag = null) : this(stream, MediaTypeHeaderValue.Parse(contentType), !string.IsNullOrEmpty(etag) ? EntityTagHeaderValue.Parse(etag) : null)
     {
     }
 
     /// <summary>
     /// 构造函数
     /// </summary>
-    /// <param name="fileStream">文件流</param>
+    /// <param name="stream">文件流</param>
     /// <param name="contentType">Content-Type</param>
     /// <param name="etag">ETag</param>
-    public ResumeFileStreamResult(Stream fileStream, MediaTypeHeaderValue contentType, EntityTagHeaderValue etag = null) : base(fileStream, contentType)
+    public ResumeFileStreamResult(Stream stream, MediaTypeHeaderValue contentType, EntityTagHeaderValue etag = null) : base(stream, contentType)
     {
+        if (stream.CanSeek)
+        {
+            stream.Seek(0, SeekOrigin.Begin);
+        }
+
         EntityTag = etag;
         EnableRangeProcessing = true;
     }