在golang中强制关闭http连接

时间:2018-06-01 06:37:02

标签: http go

我的程序从一台服务器下载文件,然后将其返回给用户。这是它的片段:

// Make get request to target server
resp, httpErr := http.Get(url.String()) 

// Return error if http request is failed 
if httpErr != nil {
    fmt.Fprintln(w,"Http Request Failed :" ,httpErr.Error())
    return
}

//Setting up headers
w.Header().Set("Content-Disposition", "attachment; filename="+vid.Title+"."+format.Extension)
w.Header().Set("Content-Type", r.Header.Get("Content-Type"))
w.Header().Set("Content-Length", strconv.Itoa(int(resp.ContentLength)))

// Copy instream of resp.Body to writer
io.Copy(w, resp.Body)

当用户停止下载或关闭连接时,我也想关闭GET连接。 但是我没有通过使用图找到它。如何关闭用户的连接?

1 个答案:

答案 0 :(得分:4)

您应该在任何情况下关闭请求的正文:

.Value

不应该做更多的事情。当客户端关闭连接resp, httpErr := http.Get(url.String()) if httpErr != nil { // handle error return } // if it's no error then defer the call for closing body defer resp.Body.Close() 时返回错误。 io.Copy返回写入的字节数和错误。如果你想知道副本是否成功,你可以检查一下。

io.Copy