package util import ( "io" "io/ioutil" "net/http" "os" "path/filepath" "strings" ) func WriteFile(fileName string, fileBytes []byte) (string, error) { var ( nameSplit []string tempFile *os.File err error ) // Used to get the file extension // This could be improved with a mime-type lookup nameSplit = strings.Split(fileName, ".") tempFile, err = ioutil.TempFile("./uploads", "upload-*."+nameSplit[len(nameSplit)-1]) if err != nil { return "", err } defer tempFile.Close() _, err = tempFile.Write(fileBytes) return filepath.Base(tempFile.Name()), err } func DownloadFile(url string) (string, error) { var ( resp *http.Response fileBytes []byte err error ) resp, err = http.Get(url) if err != nil { return "", err } defer resp.Body.Close() fileBytes, err = io.ReadAll(resp.Body) return WriteFile(url, fileBytes) }