1.http.ServeFile
function Download(c *Gin.Context){
????filename:="test"
????localPath:="d:/test/201912/33/a.pdf"
????c.Writer.Header().Set("Content-Type", "text/pdf")
????c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.pdf", filename))
????http.ServeFile(c.Writer, c.Request, localPath)
}
2.?ioutil.ReadAll
function Download(c *Gin.Context){
????res, err :=http.Get("http://test.com/a.pdf")
????if err !=nil {
????????panic(err)
????}
????content, err := ioutil.ReadAll(res.Body)
????if err != nil {
? ? ? ? ?panic(err)
????}
????filename :=url.QueryEscape("test.pdf")// 防止中文亂碼
????c.Writer.Header().Add("Content-Type", "application/octet-stream")
????c.Writer.Header().Add("Content-Disposition", "attachment; filename=\""+filename+"\"")
????c.Writer.Write(content)
}
3.io.Copy
function Download(c *Gin.Context){
????res, err :=http.Get("http://test.com/a.pdf")
????if err !=nil {
????????panic(err)
????}
????filename :=url.QueryEscape("test.pdf")// 防止中文亂碼
????c.Writer.Header().Add("Content-Type", "application/octet-stream")
????c.Writer.Header().Add("Content-Disposition", "attachment; filename=\""+filename+"\"")
????io.Copy(c.Writer, res.Body)
}