title: Upload a file with POST request golang
body: <p>I'm new to golang and I'm trying to write a function that uploads a file with a post request to telegram for a bot I'm writing.</p>
  
  <p>I've tried with this code but the error I'm getting from telegram is 
  <code>Bad Request: there is no photo in the request</code>.</p>
  
  <p>I've searched on the net for how to do that, but none of what I found helped me through the problem.</p>
  
  <pre><code>func SendPostRequest (url string, filename string) []byte {
      file, err := os.Open(filename)
  
      if err != nil {
          log.Fatal(err)
      }
      defer file.Close()
  
      response, err := http.Post(url, "binary/octet-stream", file)
  
      if err != nil {
          log.Fatal(err)
      }
      defer response.Body.Close()
  
      content, err := ioutil.ReadAll(response.Body)
  
      if err != nil {
          log.Fatal(err)
      }
  
      return content
  }
  </code></pre>
  
  <p>The function I'm calling the SendPostRequest from is</p>
  
  <pre><code>func (e Engine) SendPhoto (filename string, chatId int64) APIResponse {
      var url = fmt.Sprintf("%ssendPhoto?chat_id=%d", e.baseUrl, chatId)
  
      var content []byte = SendPostRequest(url, filename)
      var response APIResponse
  
      json.Unmarshal(content, &amp;response)
      return response
  }
  </code></pre>
  
  <p>EDIT:
  The link to the Telegram bot api I'm using in the code is <a href="https://core.telegram.org/bots/api" rel="noreferrer">https://core.telegram.org/bots/api</a></p>
  
  <p>And the api method is <a href="https://core.telegram.org/bots/api#sendphoto" rel="noreferrer">https://core.telegram.org/bots/api#sendphoto</a></p>