我有一个带有杜松子酒的 golang 后端。它应该作为包含音频文件的 ftp 服务器的代理。因此,我的客户端应该能够调用端点 /download/filepath,然后 Golang 应用程序应该从 ftp 服务器获取文件并将其作为文件返回(无流)。
我当前的解决方案是从 ftp 读取文件作为 []byte 并使用 ioutil.TempFile() 临时将其写入磁盘,并使用 ctx.File() 返回该文件。
如果可能的话,我想跳过创建临时文件的步骤。那可能吗?也许有一种方法可以代理调用并直接将 http 调用连接到 ftp 调用?
请注意,我不控制客户端应用程序,因此无法更改它。
使用Context.Data写入 a[]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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10221 次 |
| 最近记录: |