यहाँ एक नमूना है। https://github.com/thbar/golang-playground/blob/master/download-files.go
इसके अलावा, मैं आपको कुछ कोड दे सकता हूं जो आपकी मदद कर सकते हैं।
कोड:
func HTTPDownload(uri string) ([]byte, error) {
fmt.Printf("HTTPDownload From: %s.\n", uri)
res, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
d, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("ReadFile: Size of download: %d\n", len(d))
return d, err
}
func WriteFile(dst string, d []byte) error {
fmt.Printf("WriteFile: Size of download: %d\n", len(d))
err := ioutil.WriteFile(dst, d, 0444)
if err != nil {
log.Fatal(err)
}
return err
}
func DownloadToFile(uri string, dst string) {
fmt.Printf("DownloadToFile From: %s.\n", uri)
if d, err := HTTPDownload(uri); err == nil {
fmt.Printf("downloaded %s.\n", uri)
if WriteFile(dst, d) == nil {
fmt.Printf("saved %s as %s\n", uri, dst)
}
}
}
io.Copy
इनपुट से 32kb (अधिकतम) पढ़ता है और उन्हें आउटपुट पर लिखता है, फिर दोहराता है। तो स्मृति के बारे में चिंता मत करो।