3 回答
TA贡献1830条经验 获得超3个赞
使用Context.Data写入 a[]byte
作为响应。
您还可以使用Context.DataFromReader直接从 FTP 响应复制到 HTTP 响应。
HTTP 响应是字节流。没有办法解决这个问题。
TA贡献1798条经验 获得超7个赞
在gin框架中向客户端提供二进制文件,然后浏览器在用户点击API时自动下载文件,服务器不需要将文件保存到服务器(无需保存静态文件),然后使用此方法c.Data。其中第三个参数的数据类型为[]byte。我希望这个答案对每个人都有用并且更容易理解。这是一个示例代码。
func DownloadFile(c *gin.Context) {
byteFile, err := ioutil.ReadFile("./file.txt")
if err != nil {
fmt.Println(err)
}
c.Header("Content-Disposition", "attachment; filename=file-name.txt")
c.Data(http.StatusOK, "application/octet-stream", byteFile)
}
TA贡献1906条经验 获得超10个赞
您可以ResponseWriter在读取文件时写入。它的工作原理就像使用http.ResponseWriter.
import "io"
//...
io.Copy(ctx.ResponseWriter, ftpReader)
- 3 回答
- 0 关注
- 371 浏览
添加回答
举报