From 0788c6a770db2d7c462d76a951e4727df13362ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A1=80=E5=B0=BC=E9=BE=9F?= <365252428@qq.com>
Date: Mon, 23 Jun 2025 15:14:53 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pkg/utils/untils.go | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/pkg/utils/untils.go b/pkg/utils/untils.go
index 3ce497b..643c11d 100644
--- a/pkg/utils/untils.go
+++ b/pkg/utils/untils.go
@@ -118,7 +118,13 @@ func ToExcelByType(titleList []string, dataList []interface{}, dataType string,
 // ResponseXls  content 为上面生成的io.ReadSeeker, fileTag 为返回前端的文件名
 func ResponseXls(c *gin.Context, content io.ReadSeeker, fileTag string) {
 	fileName := fmt.Sprintf("%s.%s", fileTag, ExcelPrefix)
-	c.Writer.Header().Add("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, fileName))
-	c.Writer.Header().Add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+	// 返回 Excel 文件流给前端
+	c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+	c.Header("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, fileName))
+	c.Header("File-Name", fmt.Sprintf("%s", fileName))
+	c.Header("Access-Control-Expose-Headers", "File-Name")
+	//_ = c.Writer(c.Writer)
+	//c.Writer.Header().Add("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, fileName))
+	//c.Writer.Header().Add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
 	http.ServeContent(c.Writer, c.Request, fileName, time.Now(), content)
 }