Переглянути джерело

修复导出文件名错误

qinchaoyue 6 місяців тому
батько
коміт
0003a60af9

+ 1 - 1
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -516,7 +516,7 @@ namespace Hotline.Api.Controllers
             }
 
             var info = await _knowledgeRepository.GetAsync(dto.Ids[0]) ?? throw UserFriendlyException.SameMessage("知识不存在");
-            return info.Content.HtmlToStream(dto.FileType).GetFileStreamResult(dto.FileType, "知识详情");
+            return info.Content.HtmlToStream(dto.FileType).GetFileStreamResult(dto.FileType, info.Title, false);
         }
 
         /// <summary>

+ 21 - 5
src/Hotline.Application/Tools/StreamExtensions.cs

@@ -5,25 +5,41 @@ using Microsoft.AspNetCore.Mvc;
 namespace Hotline.Application.Tools;
 public static class StreamExtensions
 {
-    public static FileStreamResult GetPDFFile(this Stream stream, string fileName = "")
+    public static FileStreamResult GetPDFFile(this Stream stream, string fileName)
     {
         return stream.GetFileStreamResult(EFileType.pdf, fileName);
     }
 
-    public static FileStreamResult GetExcelFile(this Stream stream, string fileName = "")
+    public static FileStreamResult GetExcelFile(this Stream stream, string fileName)
     {
         return stream.GetFileStreamResult(EFileType.excel, fileName);
     }
 
-    public static FileStreamResult GetWordFile(this Stream stream,  string fileName = "")
+    public static FileStreamResult GetWordFile(this Stream stream, string fileName)
     {
         return stream.GetFileStreamResult(EFileType.word, fileName);
     }
 
-    public static FileStreamResult GetFileStreamResult(this Stream stream, EFileType fileType, string fileName = "")
+    /// <summary>
+    /// 生成流文件http响应信息
+    /// </summary>
+    /// <param name="stream">文件流</param>
+    /// <param name="fileType">文件类型</param>
+    /// <param name="fileName">文件名字</param>
+    /// <param name="hasTail">是否自动生成时间后缀</param>
+    /// <returns></returns>
+    public static FileStreamResult GetFileStreamResult(this Stream stream, EFileType fileType, string fileName, bool hasTail = true)
     {
         var tail = DateTime.Now.ToString("yyyyMMddhhmmss") + fileType.GetFileExtension();
-        fileName = fileName.IsNullOrEmpty() ? tail : $"{fileName}_{tail}";
+        var tailName = fileName + tail;
+        if (hasTail)
+        {
+            fileName = tailName;
+        }
+        else
+        {
+            fileName += fileType.GetFileExtension();
+        }
         return new FileStreamResult(stream, fileType.GetContentType())
         {
             FileDownloadName = fileName

+ 4 - 1
src/Hotline.Logger/RequestResponseLoggingMiddleware.cs

@@ -88,7 +88,10 @@ namespace Hotline.Logger
             response.Body.Seek(0, SeekOrigin.Begin);
             var text = await new StreamReader(response.Body).ReadToEndAsync();
             response.Body.Seek(0, SeekOrigin.Begin);
-            accModel.OutResult = text;
+            if (response.ContentType.Contains("application/json"))
+            { 
+                accModel.OutResult = text;
+            }
             accModel.Interval = (long)(DateTime.Now - requestTime).TotalMilliseconds;
             return accModel;
         }