在从服务器下载文件并将其返回给用户的程序中,保持连接完整性至关重要。当用户停止下载或终止连接时,GET 连接也应该终止。但是,通过使用情况图表观察到,这种情况并未发生。
要解决此问题,必须在所有情况下关闭请求正文。操作方法如下:
<code class="go">resp, httpErr := http.Get(url.String()) if httpErr != nil { // Handle error return } // If there's no error, defer the call for closing the body defer resp.Body.Close()</code>
推迟 Body 的关闭可以确保即使发生错误它也会被执行。此外,io.Copy 还提供有关复制操作成功的信息。您可以使用以下代码来检查这一点:
<code class="go">written, err := io.Copy(w, resp.Body) if err != nil { // Copy did not succeed }</code>
通过优雅地关闭连接并检查 io.Copy 的结果,您可以确保在用户关闭下载或连接时终止 HTTP 连接.
以上是以下是一些适合问答格式的标题选项: * **为什么当用户终止下载时我的 Go HTTP 连接没有关闭?** * **如何优雅地关闭 HTTP 连接的详细内容。更多信息请关注PHP中文网其他相关文章!