如何正确配置大文件的HttpClient流?

精灵鲍勃

Microsoft的HttpClient官方文档指出,如果我们想使用HttpClient下载大文件,则应该

传输这些下载内容,而不使用默认缓冲。如果使用默认缓冲,则客户端内存使用量将非常大,从而可能导致性能大幅下降。

什么是默认缓冲,以及如何对其进行更改,以便无论最终下载的文件大小如何,都不会遇到上述概述的问题?

虚拟代码段将不胜感激!

阿尔贝托

您必须使用该GetStreamAsync方法。文档中所述

此操作不会阻止。读取响应头后,返回的Task对象将完成。此方法不读取也不缓冲响应正文

例:

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);
}

所有其他方法,例如GetByteArrayAsyncGetStringAsync将缓冲响应,并且将在读取整个响应正文之后完成。

通过所使用的默认的缓冲区大小CopyToAsync是81920个字节由作为声明_DefaultCopyBufferSize您可以通过使用重载来更改它CopyToAsync(Stream, Int32)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Angular的httpClient下载大文件(> 1GB)?

来自分类Dev

如何使用大文件,NodeJS流和管道

来自分类Dev

如何通过卡夫卡流大文件?

来自分类Dev

如何检查大文件?

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

使用HttpClient下载Web API大文件

来自分类Dev

通过响应流发送大文件

来自分类Dev

如何正确编辑 git 配置文件?

来自分类Dev

如何读取具有固定长度定义的配置文件以相应地打印大文件

来自分类Dev

实施RESTful大文件上传的正确方法

来自分类Dev

这是分割大文件的正确方法吗?

来自分类Dev

如何在api中配置文件流?

来自分类Dev

如何在traefik中配置上传大文件速度限制?

来自分类Dev

蓝牙:如何发送大文件

来自分类Dev

蓝牙:如何发送大文件

来自分类Dev

如何分块下载大文件

来自分类Dev

如何对大文件进行排序?

来自分类Dev

发送大文件/内容时HttpClient是否存在缺陷?

来自分类Dev

发送大文件/内容时HttpClient是否存在缺陷?

来自分类Dev

如何在C ++中正确获取输入/输出流的文件/流位置指针?

来自分类Dev

在Azure Blob存储上上传大文件时,“流太长”

来自分类Dev

如何在硒中正确设置Firefox配置文件?

来自分类Dev

如何在Debian Wheezy上正确配置sudoers文件?

来自分类Dev

如何在 Windows 上正确使用 Spring 配置文件

来自分类Dev

如何从 gschema.xml 文件正确配置 dconf 架构?

来自分类Dev

如何正确处理httpClient?

来自分类Dev

用delphi写入大文件的正确方法是什么

来自分类Dev

如何正确配置WakeOnUSB?

来自分类Dev

如何正确配置webpack?