每当我尝试从服务器下载文件(服务器在设备上,而不是在互联网上)> 4Gb 时,传输实际上只传输看起来是 (FileSize) % 4Gb 的文件。换句话说,对于一个刚刚超过 4.5Gb 的文件,我最终只传输了大约 600mb 的数据。
我认为这与内容长度标头等有关,但我不确定确切的机制是什么。我尝试过使用 WebClient 和 WebRequest 但两者都表现出相同的行为。
有谁知道我怎么能超过这个限制?这是我当前的循环:
byte[] buffer = new byte[4096];
WebRequest request = WebRequest.Create(new Uri(transferDetails.URL));
using (WebResponse response = request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fileStream = new FileStream(actualPath, FileMode.Create, FileAccess.Write))
{
int count = 0;
do
{
// Read a block.
count = responseStream.Read(buffer, 0, buffer.Length);
// Write out to the local file.
if(count > 0)
{
fileStream.Write(buffer, 0, count);
}
} while (count != 0);
}
}
}