第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gin 服務(wù) []byte 作為文件

Gin 服務(wù) []byte 作為文件

Go
aluckdog 2022-06-06 15:33:53
我有一個帶有杜松子酒的 golang 后端。它應(yīng)該作為包含音頻文件的 ftp 服務(wù)器的代理。因此,我的客戶端應(yīng)該能夠調(diào)用端點 /download/filepath,然后 Golang 應(yīng)用程序應(yīng)該從 ftp 服務(wù)器獲取文件并將其作為文件(無流)返回。我目前的解決方案是從 ftp 中讀取文件為 []byte 并使用 ioutil.TempFile() 將其臨時寫入磁盤并使用 ctx.File() 返回該文件。如果可能的話,我想跳過創(chuàng)建臨時文件的步驟。那可能嗎?也許有一種方法可以代理呼叫并將 http 呼叫直接連接到 ftp 呼叫?注意我不控制客戶端應(yīng)用程序,所以我不能改變它。
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

使用Context.Data寫入 a[]byte作為響應(yīng)。

您還可以使用Context.DataFromReader直接從 FTP 響應(yīng)復制到 HTTP 響應(yīng)。

HTTP 響應(yīng)是字節(jié)流。沒有辦法解決這個問題。


查看完整回答
反對 回復 2022-06-06
?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

在gin框架中向客戶端提供二進制文件,然后瀏覽器在用戶點擊API時自動下載文件,服務(wù)器不需要將文件保存到服務(wù)器(無需保存靜態(tài)文件),然后使用此方法c.Data。其中第三個參數(shù)的數(shù)據(jù)類型為[]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)

}


查看完整回答
反對 回復 2022-06-06
?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

您可以ResponseWriter在讀取文件時寫入。它的工作原理就像使用http.ResponseWriter.


import "io"


//...


io.Copy(ctx.ResponseWriter, ftpReader)


查看完整回答
反對 回復 2022-06-06
  • 3 回答
  • 0 關(guān)注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號