golang http 下载
时间: 2023-10-05 12:06:14 浏览: 61
你可以使用 Go 标准库中的 `net/http` 包来下载文件。以下是一个简单的示例:
```go
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := "http://example.com/file.zip"
filepath := "file.zip"
// 创建文件
file, err := os.Create(filepath)
if err != nil {
panic(err)
}
defer file.Close()
// 发起 GET 请求获取文件
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
// 将响应体写入文件
_, err = io.Copy(file, resp.Body)
if err != nil {
panic(err)
}
fmt.Println("文件下载完成")
}
```
在此示例中,我们使用 `http.Get` 方法向服务器发送 GET 请求,并将响应体写入本地文件。需要注意的是,我们使用 `defer` 关键字确保在函数返回前关闭文件和响应体。
相关问题
golang 下载http client
可以通过以下代码下载 golang 的 http client:
```
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
resp, err := http.Get("https://golang.org/pkg/net/http/")
if err != nil {
fmt.Println("Error: ", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error: ", err)
return
}
fmt.Println(string(body))
}
```
这段代码使用了 golang 的标准库中的 http 包,通过 http.Get 方法获取了 golang 官网的 http 包文档,并将其打印出来。
golang 实现http 下载文件服务
可以使用 Golang 的标准库 `net/http` 来实现 HTTP 下载文件服务。以下是一个简单的示例代码:
```go
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
http.HandleFunc("/download", func(w http.ResponseWriter, r *http.Request) {
// 从 URL 参数中获取文件名
filename := r.URL.Query().Get("filename")
if filename == "" {
http.Error(w, "filename parameter is missing", http.StatusBadRequest)
return
}
// 打开文件并检查错误
file, err := os.Open(filename)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer file.Close()
// 设置响应头,告诉浏览器下载文件
w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
w.Header().Set("Content-Type", "application/octet-stream")
w.Header().Set("Content-Length", fmt.Sprintf("%d", file.Stat().Size()))
// 将文件内容写入响应体
http.ServeContent(w, r, filename, file.ModTime(), file)
})
// 监听端口并启动服务
fmt.Println("Server listening on :8080...")
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Error starting server:", err)
}
}
```
可以将上述代码保存为 `main.go`,然后在终端中运行 `go run main.go` 启动服务。服务将监听 8080 端口,并且可以通过访问 `http://localhost:8080/download?filename=example.txt` 来下载名为 `example.txt` 的文件。注意,这里的文件名需要是相对于运行程序的当前目录的相对路径。