首页 > 解决方案 > 如何避免在分块传输编码中发送 HTTP 响应

问题描述

我正在编写一个 HTTP 服务器,它有一个端点,它只是从文件系统中读取一个文件并在 HTTP 响应中回复。

r.GET("/fs/:id/:filename", func(c *gin.Context) {

        ...
        data, err := ioutil.ReadFile(fpath)
        if err != nil {
            render.Render(w, r, routes.NewErrNotFound(err))
            return
        }

        c.Writer.Write(data)
}

它当前正在使用分块传输编码进行响应。使用分块传输,服务器不会Content-Length。使用此 API 的低功耗设备无法提前分配缓冲区。它不好处理。

还有另一种传输文件的方法,我该如何控制?

标签: httpgogo-gin

解决方案


推荐阅读