在go语言中实现下载图片文件的示例

2023-06-01 00:00:00 语言 示例 下载图片

看看通过http.Get()函数从其他服务器下载/获取文件,并将内容保存到文件中。

思路流程

根据给定的URL计算出要创建的文件名
检查是否有重定向并加以处理
报告获取状态
将内容保存到一个文件中
打印出下载的字节数。

downloadfile.go文件

 package main
 
 import (
         "fmt"
         "io"
         "net/http"
         "net/url"
         "os"
         "strings"
 )
 
 func main() {
         fmt.Println("下载文件...")
         rawURL := "https://www.zongscan.com/public/static/home/images/zongscan-log.png"
         fileURL, err := url.Parse(rawURL)
         if err != nil {
                 panic(err)
         }
         
         path := fileURL.Path
         segments := strings.Split(path, "/")
         fileName := segments[2] //改变数字以适应url.Path位置的变化 
         file, err := os.Create(fileName)
         if err != nil {
                 fmt.Println(err)
                 panic(err)
         }
         defer file.Close()
         
         check := http.Client{
                 CheckRedirect: func(r *http.Request, via []*http.Request) error {
                         r.URL.Opaque = r.URL.Path
                         return nil
                 },
         }
         
         resp, err := check.Get(rawURL) //添加一个过滤器来检查重定向
         if err != nil {
                 fmt.Println(err)
                 panic(err)
         }
         defer resp.Body.Close()
         
         fmt.Println(resp.Status)
         size, err := io.Copy(file, resp.Body)
         if err != nil {
                 panic(err)
         }
         
         fmt.Printf("%s 已下载 %v bytes", fileName, size)
 }

输出:

下载文件...
200 OK
zongscan-log.png 已下载210042bytes

相关文章

在go语言中实现http.Get示例

https://www.zongscan.com/demo333/96160.html

相关文章