rest - Golang 服务响应文件

标签 rest go

如何在 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/

相关文章:

rest - 标签应该是它自己的资源还是嵌套的属性?

java - 无法在 Retrofit 2 中获取 json 对象和数组

api - 是否有工具可以在文档中定义 Rest API?

time - 如何使用 yyyyMMddHHmmss 格式格式化当前时间?

json - 如何创建包含 []byte 类型的嵌套 json 结构?

rest - 如何在 C# UWP 应用程序中使用 ASP.NET Core Web API?

java - MULTIPART_FORM_DATA : No injection source found for a parameter of type public javax. ws.rs.core.Response

rest - 包含 map 的对象?

go - 可以使用 go HTTP 客户端访问 TCP 数据包详细信息吗?

macos - 将自签名证书作为受信任的根证书添加到 Apple 钥匙串(keychain)