diff --git a/util/url.go b/util/url.go index 6dbb0b6..91e5511 100644 --- a/util/url.go +++ b/util/url.go @@ -1,7 +1,11 @@ package util import ( + "fmt" + "io" + "net/http" "net/url" + "os" "strings" ) @@ -31,3 +35,32 @@ func normalizeURL(rawURL string) string { return u.String() } + +func DownloadFile(url string, filepath string) error { + // 发送 HTTP GET 请求 + resp, err := http.Get(url) + if err != nil { + return fmt.Errorf("下载失败: %v", err) + } + defer resp.Body.Close() + + // 检查 HTTP 响应状态码 + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("请求失败,状态码: %d", resp.StatusCode) + } + + // 创建文件 + out, err := os.Create(filepath) + if err != nil { + return fmt.Errorf("创建文件失败: %v", err) + } + defer out.Close() + + // 将响应的内容复制到文件 + _, err = io.Copy(out, resp.Body) + if err != nil { + return fmt.Errorf("保存失败: %v", err) + } + + return nil +}