package utils import ( "fmt" "io" "net/http" "os" "time" ) func DownloadFile(url string, path string) (bool, string) { // 创建HTTP客户端 client := &http.Client{ Timeout: 5 * time.Second, } // 发送GET请求 resp, err := client.Get(url) if err != nil { return false, fmt.Sprintf("下载文件失败: %v", err) } defer resp.Body.Close() // 检查响应状态码 if resp.StatusCode != http.StatusOK { return false, fmt.Sprintf("下载文件失败,HTTP状态码: %d", resp.StatusCode) } // 创建目标文件 out, err := os.Create(path) if err != nil { return false, fmt.Sprintf("创建文件失败: %v", err) } defer out.Close() // 将响应内容写入文件 _, err = io.Copy(out, resp.Body) if err != nil { return false, fmt.Sprintf("写入文件失败: %v", err) } // 检查文件是否存在 if !FileExistAndNotNull(path) { return false, fmt.Sprintf("文件下载失败: 文件为空 => %s", path) } return true, fmt.Sprintf("文件下载成功: %s", path) }