当前位置: > > > > Gin 将字节作为文件
来源:stackoverflow
2024-04-20 16:33:35
0浏览
收藏
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Gin 将字节作为文件》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容
我有一个带有杜松子酒的 golang 后端。它应该作为包含音频文件的 ftp 服务器的代理。因此,我的客户端应该能够调用端点 /download/filepath,然后 Golang 应用程序应该从 ftp 服务器获取文件并将其作为文件返回(无流)。
我当前的解决方案是从 ftp 读取文件作为 []byte 并使用 ioutil.TempFile() 临时将其写入磁盘,并使用 ctx.File() 返回该文件。
如果可能的话,我想跳过创建临时文件的步骤。那可能吗?也许有一种方法可以代理调用并直接将 http 调用连接到 ftp 调用?
请注意,我不控制客户端应用程序,因此无法更改它。
解决方案
使用 写入 []byte
作为响应。
您还可以使用 直接从 ftp 响应复制到 http 响应。
http 响应是字节流。没有办法解决这个问题。
gin框架,向客户端提供二进制文件,然后当用户点击api时浏览器自动下载文件,并且服务器不需要保存文件(没有静态文件),那么使用这个方法。其中第三个参数的数据类型是[]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) }
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Gin 将字节作为文件》文章吧,也可关注公众号了解相关技术文章。