如何在 Go 中更有效地从服务返回文件?例如,我收到这样一个文件
这是我用来从服务接收文件的示例:
func (b *BenefitListHandler) UploadAppend(w http.ResponseWriter, r *http.Request) {
r.ParseMultipartForm(32 << 20)
file, handler, err := r.FormFile("benefitlistuploadfile")
if err != nil {
libhttp.EncodeErrorResponse(w, err, http.StatusInternalServerError)
return
}
defer file.Close()
f, err := os.OpenFile("./"+handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
libhttp.EncodeErrorResponse(w, err, http.StatusInternalServerError)
return
}
defer f.Close()
io.Copy(f, file)
go b.readFileAppend("./" + handler.Filename)
libhttp.EncodeOKResponse(w, true)}
在那之后,我很困惑如何从该请求发送另一个文件,如二进制文件,以减少时间和消耗。
最佳答案
查看有关问题的信息后,我得到了解决方案
为了指定浏览器是一个文件,我将该 header 放入响应中:
w.Header().Set("Content-Disposition", "attachment; filename=NameOfFile")
之后我用 ioutil 读取文件:
files, err := ioutil.ReadFile(result)
最后我使用 http.ResponseWriter 将文件的 []byte 写入响应
w.Write(files)
关于rest - Golang 服务响应文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165999/