登录
首页 >  Golang >  Go问答

Gin 将字节作为文件

来源:stackoverflow

时间:2024-04-20 16:33:35 288浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Gin 将字节作为文件》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我有一个带有杜松子酒的 golang 后端。它应该作为包含音频文件的 ftp 服务器的代理。因此,我的客户端应该能够调用端点 /download/filepath,然后 Golang 应用程序应该从 ftp 服务器获取文件并将其作为文件返回(无流)。

我当前的解决方案是从 ftp 读取文件作为 []byte 并使用 ioutil.TempFile() 临时将其写入磁盘,并使用 ctx.File() 返回该文件。

如果可能的话,我想跳过创建临时文件的步骤。那可能吗?也许有一种方法可以代理调用并直接将 http 调用连接到 ftp 调用?

请注意,我不控制客户端应用程序,因此无法更改它。


解决方案


使用 Context.Data 写入 []byte 作为响应。

您还可以使用 Context.DataFromReader 直接从 ftp 响应复制到 http 响应。

http 响应是字节流。没有办法解决这个问题。

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

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Gin 将字节作为文件》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>