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)
}