Вот что у меня сработало. Я использовал этот метод для вызова метода API и отправки файла в виде байта []. Я попытался отправить целый байт [], но метод API не смог его получить.
private static async void SendFiles(string path)
{
var bytes = File.ReadAllBytes(path);
var length = bytes.Length;
foreach (var b in bytes)
{
length--;
string sendFilesUrl = $"http://api/communication/sendF/{b}/{length}";
StringContent queryString = new StringContent(bytes.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded");
HttpResponseMessage response = await client.PostAsync(sendFilesUrl, queryString);
string responseBody = await response.Content.ReadAsStringAsync();
}
}
Мой метод API
[HttpPost]
[Route("sendF/{b}/{length}")]
public HttpResponseMessage SendF([FromUri]byte[] b, [FromUri]int length)
{
if(length != 0)
{
bytes.AddRange(b);
}
else
{
File.WriteAllBytes(@"G:\test\test.exe", bytes.ToArray<byte>());
}
return CreateResponse(client);
}
Этот код работает для меня, но для передачи всех байтов требуется очень много времени, если файл большой. В настоящее время я ищу более эффективный способ отправки байтов. Одно решение, которое пришло мне в голову, - это отправить байт [] кусками