我的程序从一台服务器下载文件,然后将其返回给用户。这是它的片段:
// 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连接。 但是我没有通过使用图找到它。如何关闭用户的连接?
答案 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