golang 访问 http 请求下载资源

正常情况下,下面这段代码可以获取到响应结构体的字节流,反序列化一下就能得到响应结构体,当 url 是一个互联网对象资源时,即访问该 url 是用来下载资源时,下面这段代码获取到的就是被资源的二进制流

func HttpGet(url string) ([]byte, error) {
	resp, err := http.Get(url)
	if err != nil {
		return nil, err
	}
	if resp == nil {
		return nil, fmt.Errorf("resp is nil")
	}
	defer resp.Body.Close()
	if resp.StatusCode != http.StatusOK {
		return nil, fmt.Errorf("resp status is %s", resp.Status)
	}
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	return body, nil
}

获取到文件字节流后,可以保存成本地文件,也可以做其他动作,比如把二进制流继续传递到其他地方。下面是把二进制流保存成本地文件的实现

row, err := HttpGet(url)

reader := bufio.NewReaderSize(raw, 1024*32);

file, err := os.Create(filename)
if err != nil {
 panic(err)
}
writer := bufio.NewWriter(file)

参考Golang 使用http Client下载文件的实现方法_Golang

猜你喜欢

转载自blog.csdn.net/qq_41767116/article/details/131161192