From 301003bb605007c3e035442de4bced9dd02164bb Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期一, 28 八月 2023 17:46:18 +0800
Subject: [PATCH] fix

---
 api/v1/test/contract.go |   63 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 1 deletions(-)

diff --git a/api/v1/test/contract.go b/api/v1/test/contract.go
index 02b469c..a3411c5 100644
--- a/api/v1/test/contract.go
+++ b/api/v1/test/contract.go
@@ -1,8 +1,11 @@
 package test
 
 import (
+	"bytes"
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
+	"net/http"
 	"srm/global"
 	"srm/model/common/request"
 	"srm/model/common/response"
@@ -10,6 +13,7 @@
 	testReq "srm/model/test/request"
 	"srm/service"
 	"strconv"
+	"time"
 )
 
 type ContractApi struct {
@@ -220,6 +224,63 @@
 		//c.Writer.Header().Set("Content-Type", "application/octect-stream")
 		//c.Writer.Header().Set("Content-Disposition", "attachment;filename="+contract.FileName)
 		//c.Writer.Write(contract.FileContent)
-		c.Data(200, "application/octect-stream", contract.FileContent)
+		//c.Data(200, "application/octect-stream", contract.FileContent)
+		//reader := bytes.NewReader(contract.FileContent)
+		//c.DataFromReader(http.StatusOK, int64(len(contract.FileContent)), "application/pdf", reader, map[string]string{"Content-Disposition": fmt.Sprintf("attachment; filename=%s", contract.FileName)})
+		reader := bytes.NewReader(contract.FileContent)
+		c.Writer.Header().Set("Content-Type", "application/pdf")
+		c.Writer.Header().Set("Content-Disposition", "inline; filename="+contract.FileName)
+		http.ServeContent(c.Writer, c.Request, contract.FileName, time.Now(), reader)
+	}
+}
+
+// DownloadContract 涓嬭浇Contract
+// @Tags Contract
+// @Summary 涓嬭浇Contract
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data query test.Contract true "鐢╥d鏌ヨContract"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"涓嬭浇鎴愬姛"}"
+// @Router /con/downloadContract [get]
+func (conApi *ContractApi) DownloadContract(c *gin.Context) {
+	var con test.Contract
+	err := c.ShouldBindQuery(&con)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	id := c.Query("id")
+	if id == "" {
+		response.FailWithMessage("id涓嶈兘涓虹┖", c)
+		return
+	}
+
+	val64, err := strconv.ParseUint(id, 10, 64)
+	if err != nil {
+		response.FailWithMessage("id鏍煎紡閿欒", c)
+		return
+	}
+
+	// Convert uint64 to uint
+	conId := uint(val64)
+
+	contract, err := conService.GetContract(conId)
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+		return
+	} else {
+		reader := bytes.NewReader(contract.FileContent)
+		// 璁剧疆蹇呰鐨勫ご淇℃伅
+		c.Header("Content-Description", "File Transfer")
+		c.Header("Content-Transfer-Encoding", "binary")
+		c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", contract.FileName))
+		c.Header("Content-Type", "application/pdf")
+
+		// 灏嗘枃浠朵綔涓哄搷搴斾綋鍙戦��
+		http.ServeContent(c.Writer, c.Request, contract.FileName, time.Now(), reader)
+		c.File(contract.FileName)
 	}
 }

--
Gitblit v1.8.0