public async Task <string> PostFile(string apiPath, string query, string filepath) { HttpResponseMessage response = null; var url = MakeApiUrl(apiPath, query); if (!string.IsNullOrEmpty(filepath)) { var form = new MultipartFormDataContent(); var stream = filesGateway.GetReadStream(filepath); var file = new StreamContent(stream); file.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = Path.GetFileName(filepath), Name = "file" }; form.Add(file); response = await http.PostAsync(url, form); } else { response = await http.PostAsync(url, null); } var content = await response.EnsureSuccessStatusCode() .Content.ReadAsByteArrayAsync(); return(Encoding.UTF8.GetString(content, 0, content.Length)); }