我想通过HTTP POST方法将文件作为byte []发送到另一台PC。另一方面,从byte []汇编文件的最有效方法是什么?我正在使用File.ReadAllBytes
方法从文件中获取byte []。
答案 0 :(得分:0)
如果您使用的是tcp,则网络协议将确保您的流以正确的顺序传输,并且不会丢失任何部分。因此,最简单的读取流将是最有效的。如果要使用并行路由并使用数据报。 如果文件很大,则必须分块发送和接收它。但是IP流可以将其隐藏起来。
答案 1 :(得分:0)
这对我有用。我使用此方法调用api方法并将文件作为byte []发送。我尝试发送整个byte [],但是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);
}
此代码对我有用,但是如果文件很大,则传递所有字节需要很长时间。目前,我正在寻找更有效的发送字节的方法。我想到的一种解决方案是分块发送byte []