golang下载文件

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)

}

你可能感兴趣的:(golang下载文件)