How to correctly configure HttpClient#39;s streaming for large files?(如何正确配置HttpClient的大文件流?)
本文介绍了如何正确配置HttpClient的大文件流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
MicrosoftHttpClient的官方文档指出,如果我们想使用HttpClient下载大文件,我们应该
流式传输这些下载,而不使用默认缓冲。如果使用默认缓冲区,客户端内存使用量将非常大,可能会导致性能大幅下降。
默认缓冲是什么,我们如何更改它,以便无论我们最终下载的文件大小如何,都不会遇到上述问题?
如有虚拟代码片段,我们将不胜感激!
推荐答案
您必须使用GetStreamAsync
方法。如documentation中所述:
此操作不会阻止。读取响应头部后,返回的任务对象将完成。此方法不读取也不缓冲响应正文。
示例:
HttpClient httpClient = new HttpClient();
var requestUri = "http://url-to-resource.com";
var stream = await httpClient.GetStreamAsync(requestUri);
using (var fileStream = File.Create("outputFile.ext"))
{
await stream.CopyToAsync(fileStream);
}
所有其他方法(如GetByteArrayAsync
或GetStringAsync
)将缓冲响应,并将在读取整个响应正文后完成。
CopyToAsync
使用的默认缓冲区大小为81920字节,由_DefaultCopyBufferSize声明。您可以使用重载CopyToAsync(Stream, Int32)
来更改它。
这篇关于如何正确配置HttpClient的大文件流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何正确配置HttpClient的大文件流?
基础教程推荐
猜你喜欢
- C# - 将浮点数转换为整数...并根据余数更改整数 2022-01-01
- 我什么时候应该使用 GC.SuppressFinalize()? 2022-01-01
- Page.OnAppearing 中的 Xamarin.Forms Page.DisplayAlert 2022-01-01
- 从 VB6 迁移到 .NET/.NET Core 的最佳策略或工具 2022-01-01
- 如何使用OpenXML SDK将Excel转换为CSV? 2022-01-01
- C# - 如何列出发布到 ASPX 页面的变量名称和值 2022-01-01
- 覆盖 Json.Net 中的默认原始类型处理 2022-01-01
- 当键值未知时反序列化 JSON 2022-01-01
- 使用 SED 在 XML 标签之间提取值 2022-01-01
- 创建属性设置器委托 2022-01-01