Golang download image from given URL
Example
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"strings"
)
var (
fileName string
fullUrlFile string
)
func main() {
fullUrlFile = "http://www.golangprograms.com/skin/frontend/base/default/logo.png"
// Build fileName from fullPath
buildFileName()
// Create blank file
file := createFile()
// Put content on file
putFile(file, httpClient())
}
func putFile(file *os.File, client *http.Client) {
resp, err := client.Get(fullUrlFile)
checkError(err)
defer resp.Body.Close()
size, err := io.Copy(file, resp.Body)
defer file.Close()
checkError(err)
fmt.Println("Just Downloaded a file %s with size %d", fileName, size)
}
func buildFileName() {
fileUrl, err := url.Parse(fullUrlFile)
checkError(err)
path := fileUrl.Path
segments := strings.Split(path, "/")
fileName = segments[len(segments)-1]
}
func httpClient() *http.Client {
client := http.Client{
CheckRedirect: func(r *http.Request, via []*http.Request) error {
r.URL.Opaque = r.URL.Path
return nil
},
}
return &client
}
func createFile() *os.File {
file, err := os.Create(fileName)
checkError(err)
return file
}
func checkError(err error) {
if err != nil {
panic(err)
}
}
Most Helpful This Week
Example to create custom error
How to use a mutex to define critical sections of code and fix race conditions?
Copy an array by value and reference into another array
How to print string with double quote in Go?
Replace any non-alphanumeric character sequences with a dash using Regex
Select single argument from all arguments of variadic function