code: func (az *AzureBlobUploader) Upload(ctx context.Context, imageDiskPath string) (string, error) {
  	// setup client
  	blob := NewStorageClient(az.account_name, az.account_key)
  
  	file, err := os.Open(imageDiskPath)
  
  	if err != nil {
  		return "", err
  	}
  	randomFileName := util.GetRandomString(30) + ".png"
  	// upload image
  	az.log.Debug("Uploading image to azure_blob", "container_name", az.container_name, "blob_name", randomFileName)
  	resp, err := blob.FileUpload(az.container_name, randomFileName, file)
  	if err != nil {
  		return "", err
  	}
  
  	if resp.StatusCode > 400 && resp.StatusCode < 600 {
  		body, _ := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20))
  		aerr := &Error{
  			Code:   resp.StatusCode,
  			Status: resp.Status,
  			Body:   body,
  			Header: resp.Header,
  		}
  		aerr.parseXML()
  		resp.Body.Close()
  		return "", aerr
  	}
  
  	if err != nil {
  		return "", err
  	}
  
  	url := fmt.Sprintf("https://%s.blob.core.windows.net/%s/%s", az.account_name, az.container_name, randomFileName)
  	return url, nil
  }
docs: // Receive path of image on disk and return azure blob url