1

每当我尝试从服务器下载文件(服务器在设备上,而不是在互联网上)> 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);
     }
 }

}

4

0 回答 0