title: How to upload files from a .NET-Application to a Rocket.Chat-Channel?
body: <p>I need to make a feedback-form in my .NET application, which sends messages to a Rocket.Chat-Channel (<a href="https://rocket.chat/" rel="nofollow noreferrer">What is Rocket.Chat?</a>).</p>
  
  <p>I am already able to send a textmessage with the api of Rocket.Chat.</p>
  
  <p>I found a <a href="https://rocket.chat/docs/developer-guides/rest-api/rooms/upload/" rel="nofollow noreferrer">documentation</a>, how to send files with an api, but i never had done this before. How can I send the files with my Json?</p>
  
  <p>Someone did that before? Maybe somebody can give me a small example to get this done.</p>
  
  <p>This is the code of my method, which sends the textmessage.</p>
  
  <pre><code>private void SendToRocketChat()
          {
              var baseAddress = "https://plc.ifm-sw.net/api/v1/chat.sendMessage";
  
              var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
              http.Method = "POST";
              http.ContentType = "application/json";
              http.Headers.Add("X-Auth-Token", "4ZLqSyN9IEFIkj6SqIde2a4orHhEdL8S0eGPEFdfS9C");
              http.Headers.Add("X-User-Id", "rocket.cat");
  
              string rid = "F24Ydk2kkTXAPWsQ9";
  
              JObject Json = new JObject(new JProperty("message", new JObject(new JProperty("rid", rid), new JProperty("msg", WebUtility.HtmlEncode(FeedbackText)))));
  
              ASCIIEncoding encoding = new ASCIIEncoding();
              Byte[] bytes = encoding.GetBytes(Json.ToString());
  
              Stream newStream = http.GetRequestStream();
              newStream.Write(bytes, 0, bytes.Length);
              newStream.Close();
  
              var response = http.GetResponse();
  
              var stream = response.GetResponseStream();
              var sr = new StreamReader(stream);
              var content = sr.ReadToEnd();
              logger.LogInformation(JsonConvert.DeserializeObject(content).ToString().Trim('{', '}'));
          }
  </code></pre>
  
  <p>And this is what i already tried for the Fileupload. Where is my error?</p>
  
  <pre><code>private void SendFileToRocketChat()
          {
              var url = "https://example-sw.net/api/v1/rooms.upload/:gdfgfgdkTXAPWsQ9";
              var filePath = "Abbildung13.jpg";
  
              var httpClient = (HttpWebRequest)WebRequest.Create(new Uri(url));
              httpClient.Method = "POST";
              httpClient.Headers.Add("X-Auth-Token", "4ZLqSyN9IEhEdLgfd8S0eGPEFdfS9C");
              httpClient.Headers.Add("X-User-Id", "rocket.cat");
              httpClient.ContentType = "multipart/form-data";
  
              MultipartFormDataContent form = new MultipartFormDataContent();
  
              FileStream fs = File.OpenRead(filePath);
              var streamContent = new StreamContent(fs);
  
              var imageContent = new ByteArrayContent(streamContent.ReadAsByteArrayAsync().Result);
              imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
  
              imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");
  
              form.Add(imageContent, "file", Path.GetFileName(filePath));
              form.Add(imageContent, "msg", "This is a message with a file");
              form.Add(imageContent, "description", "Simple text file");
  
              var response = httpClient.GetResponse();
  
              var stream = response.GetResponseStream();
              var sr = new StreamReader(stream);
              var content = sr.ReadToEnd();
              logger.LogInformation(JsonConvert.DeserializeObject(content).ToString().Trim('{', '}'));
          }
  </code></pre>