ASP.NET Core 文件上传:深入理解 Buffering 和 Streaming 模式

news/2025/11/6 10:18:44/文章来源:https://www.cnblogs.com/talentzemin/p/19195613

https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-9.0

https://www.cnblogs.com/lindexi/p/19192031

在 ASP.NET Core 中处理文件上传时,框架提供了两种核心方法:Buffering(缓冲)Streaming(流式传输)。选择正确的方法对应用的性能、资源消耗和可扩展性至关重要。

什么是 Buffering 模式?

Buffering 模式是文件上传的默认方式。在这种模式下,整个文件会被读取到内存或临时磁盘文件中,然后作为 IFormFile 对象提供给应用程序处理。

Buffering 的基本用法

[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{if (file.Length > 0){var filePath = Path.Combine(_storagePath, Path.GetRandomFileName());using (var stream = System.IO.File.Create(filePath)){await file.CopyToAsync(stream);}}return Ok();
}

Buffering 模式的底层运作机制

当客户端上传文件时,Buffering 模式在底层经历以下流程:

  1. 网络接收:HTTP 请求数据通过网卡 DMA 传输到内核的 Socket 接收缓冲区
  2. 内核缓冲:ASP.NET Core 请求处理管道读取 HTTP 请求体到内核空间
  3. 内存缓冲(小文件)
    • 如果文件 ≤ 64 KB,数据保留在内存中(托管堆)
    • 此时数据从内核空间复制到用户空间(进程内存)
  4. 磁盘缓冲(大文件)
    • 如果文件 > 64 KB,数据被写入临时文件
    • 临时文件位置:ASPNETCORE_TEMP 环境变量指定的目录
    • 这是为了避免大文件耗尽应用程序内存
  5. IFormFile 封装:框架将缓冲的数据封装为 IFormFile 对象供开发者使用

关键点:在控制器方法执行前,整个文件已经完整存在于内存或临时磁盘中。

Buffering 的优缺点

优点:

  • 代码简单直观,易于实现
  • 适合小文件上传(< 64 KB 性能最佳)
  • 完整的模型绑定支持和验证

缺点:

  • 并发上传大量文件可能耗尽内存
  • 大文件会占用磁盘空间(临时文件)
  • 不适合超大文件(如视频、数据库备份)

重要配置

services.Configure<FormOptions>(options =>
{// 单个文件大小限制(默认 128 MB)options.MultipartBodyLengthLimit = 268435456; // 256 MB// 内存缓冲阈值(默认 64 KB)options.MemoryBufferThreshold = 65536;
});

什么是 Streaming 模式?

Streaming 模式直接处理 HTTP 请求流,无需先将整个文件缓冲到内存或磁盘。文件数据以数据块的形式逐步接收和处理。

Streaming 的基本概念

在 Streaming 模式下:

  • 请求体被逐段读取(multipart sections)
  • 每个数据块立即处理或写入目标位置
  • 不依赖框架的模型绑定

Streaming 的实现示例

[HttpPost]
[DisableFormValueModelBinding] // 禁用默认模型绑定
public async Task<IActionResult> UploadStream()
{var boundary = MultipartRequestHelper.GetBoundary(MediaTypeHeaderValue.Parse(Request.ContentType),lengthLimit: 70);var reader = new MultipartReader(boundary, Request.Body);var section = await reader.ReadNextSectionAsync();while (section != null){var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out var contentDisposition);if (hasContentDispositionHeader && contentDisposition.IsFileDisposition()){// 直接流式写入目标位置var filePath = Path.Combine(_storagePath, Path.GetRandomFileName());using (var targetStream = System.IO.File.Create(filePath)){await section.Body.CopyToAsync(targetStream);}}section = await reader.ReadNextSectionAsync();}return Ok();
}

Streaming 的优缺点

优点:

  • 内存占用极低,与文件大小无关
  • 支持超大文件上传(GB 级别)
  • 更好的并发处理能力

缺点:

  • 实现复杂,需要手动解析 multipart 请求
  • 需要禁用默认模型绑定
  • 更容易出错,需要更多的错误处理

如何选择?

场景 推荐模式 原因
头像、图标(< 1 MB) Buffering 简单、性能好
文档、图片(1-10 MB) Buffering 在合理范围内
视频、备份(> 50 MB) Streaming 避免资源耗尽
高并发上传 Streaming 减少内存压力
需要立即处理 Streaming 边接收边处理

安全建议

无论使用哪种模式,都应该:

  1. 验证文件大小
if (file.Length > _fileSizeLimit)
{return BadRequest("文件过大");
}
  1. 验证文件扩展名
var ext = Path.GetExtension(fileName).ToLowerInvariant();
if (!_permittedExtensions.Contains(ext))
{return BadRequest("不支持的文件类型");
}
  1. 使用安全的文件名
// 永远不要直接使用用户提供的文件名
var safeFileName = Path.GetRandomFileName();
  1. 配置请求大小限制
[RequestSizeLimit(52428800)] // 50 MB
[RequestFormLimits(MultipartBodyLengthLimit = 52428800)]
public async Task<IActionResult> Upload(IFormFile file)
{// ...
}

总结

  • Buffering 适合大多数常规场景,代码简单,性能足够
  • Streaming 是处理大文件和高并发的必要手段
  • 理解底层机制有助于做出正确的架构决策
  • 始终要考虑安全性,无论选择哪种模式

选择正确的文件上传策略,能让你的应用在性能、可靠性和可扩展性之间取得最佳平衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/957492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年靠谱的蒸发冷冷水机厂家推荐及选择参考

2025年靠谱的蒸发冷冷水机厂家推荐及选择参考 随着工业制造技术的不断发展,蒸发冷冷水机在塑料成型、化工、食品加工、医药等行业中的应用越来越广泛。选择一家技术先进、质量可靠的蒸发冷冷水机厂家,不仅能提高生产…

2025年比较好的药用PE袋用户口碑最好的厂家榜

2025年比较好的药用PE袋用户口碑最好的厂家榜 在医药包装领域,药用PE袋因其优异的防潮、防尘、耐腐蚀性能,成为药品包装的重要选择。随着行业标准的不断提高,用户对PE袋的质量、安全性和供应商的服务能力提出了更高…

2025年比较好的普通天鹅绒厂家最新推荐排行榜

2025年比较好的普通天鹅绒厂家最新推荐排行榜 天鹅绒作为一种兼具质感与实用性的面料,广泛应用于服装、家纺、装饰等领域。随着消费者对品质要求的提升,选择一家可靠的天鹅绒供应商至关重要。本文基于产能规模、产品…

基于MATLAB的声呐图像特征提取与显示

一、预处理阶段噪声抑制高斯滤波:消除高斯噪声,保留边缘信息 filtered_img = imgaussfilt(gray_img, 1.5);中值滤波:去除椒盐噪声 filtered_img = medfilt2(gray_img, [3 3]);自适应滤波:处理非均匀噪声 filtered_…

2025年造雪机厂家新推荐排行榜,造雪机加工厂哪家合作案例多

2025年冰雪旅游与游乐行业持续升温,造雪机作为滑雪场、冰雪乐园的核心设备,其性能稳定性、气候适应性、雪质可控性直接决定场地运营效率与游客体验。然而当前市场中,造雪机厂家数量繁杂且实力分化显著:部分厂家设备…

2025年评价高的包装袋厂家选购指南与推荐

2025年评价高的包装袋厂家选购指南与推荐 在工业生产和物流运输领域,包装袋的质量直接影响产品的安全性和运输效率。2025年,随着环保要求提升和技术进步,高性能、定制化的包装袋需求持续增长。本文精选5家行业领先…

2025 年 11 月展厅设计公司权威推荐榜:企业展厅/数字展厅/科技展馆/全屋定制展厅设计制作,专业策划与创意呈现口碑之选

在当今商业环境中,展厅设计已成为企业品牌传播与产品展示的重要载体。随着数字技术的快速发展,企业展厅、数字展厅、科技展馆等各类展示空间的设计要求日益提高,不仅需要具备视觉冲击力,更要通过创新的展示手段传达…

2025年热门的太空梭游乐设施用户口碑最好的厂家榜

2025年热门的太空梭游乐设施用户口碑最好的厂家榜 随着主题公园和游乐场的快速发展,太空梭类游乐设施因其刺激性和科技感成为游客的热门选择。2025年,各大游乐设备制造商纷纷推出创新产品,以满足市场需求。本文将介…

2025 年脱硫塔厂家最新推荐排行榜:严格筛选制造商,含协会测评数据与选购指南脱硫/生物除臭/酸雾净化/一体化污水处理设备气体脱硫塔公司推荐

引言 在环保要求持续升级的当下,脱硫塔作为工业烟气治理核心设备,其品质直接影响企业环保达标与运营成本。为解决市场上厂家良莠不齐、企业选购难的问题,行业协会联合专业机构开展了脱硫塔生产厂家测评工作,测评覆…

2025 年 11 月预制舱厂家推荐排行榜,光伏预制舱,10KV/35KV/110KV高压预制舱,一二次综合预制舱,储能预制舱,风电光伏升压预制舱公司精选

行业背景与发展趋势预制舱作为一种模块化、标准化的电气设备集成解决方案,近年来在新能源、电力系统等领域展现出强大的应用价值。随着光伏发电、风电等清洁能源装机容量的快速提升,以及电网升级改造需求的持续释放,…

2025年知名的液流式绞纱染色机厂家选购指南与推荐

2025年知名的液流式绞纱染色机厂家选购指南与推荐 随着纺织行业的快速发展,液流式绞纱染色机作为高效、节能的染色设备,在市场上需求日益增长。2025年,国内外众多染整设备制造商纷纷推出新型液流式绞纱染色机,以满…

2025 年最新推荐一体化泵站源头厂家排行榜:聚焦优质预制 / 提升 / 智能泵站品牌HMPP 一体化泵站/玻璃钢一体化泵站公司推荐

引言 随着环保政策持续收紧,市政排水、工业废水处理等领域对一体化泵站的需求呈爆发式增长,但行业乱象也随之凸显。部分厂家缺乏核心技术,生产的泵站在耐腐蚀性、结构强度和智能化水平上不达标,无法适应复杂工况;…

2025 年 11 月电缆分支箱厂家推荐排行榜,电缆分接箱/电缆对接箱/35KV高压电缆分支箱/10KV欧式电缆分支箱/10KV光伏电缆分支箱公司推荐

行业背景与发展趋势电缆分支箱作为电力配网系统中的关键设备,在电力分配、电缆连接和保护方面发挥着不可替代的作用。随着我国电力基础设施建设的持续推进和智能电网的快速发展,电缆分支箱市场需求呈现稳步增长态势。…

2025年比较好的赛事旗帜定制热门厂家推荐榜单

2025年比较好的赛事旗帜定制热门厂家推荐榜单 在赛事、庆典、企业活动等场合,旗帜作为视觉标识的核心载体,不仅能传递品牌形象,还能增强现场氛围。随着定制化需求的增长,选择一家专业、可靠的旗帜定制厂家至关重要…

2025 年 11 月开窗器厂家推荐排行榜,开窗器链条,开窗器机芯,开窗器配件,优质开窗器公司推荐

行业背景与发展现状随着建筑智能化水平的不断提升,开窗器作为建筑通风系统的重要组成部分,其市场需求持续增长。开窗器链条、开窗器机芯、开窗器配件等关键部件的质量直接影响着整个系统的运行效率和可靠性。在当前的…

2025 年最新推荐石墨粉生产厂家口碑榜单:甄选行业优质厂家解析产品品质与服务能力润滑石墨粉/土状石墨粉/高碳石墨粉公司推荐

引言 石墨粉作为高熔点、强自润滑性与导电性的工业基础原料,广泛应用于电池、半导体、钢铁、耐材、冶金等关键领域,其品质与供应稳定性直接决定下游企业生产效率与产品质量。当前市场中厂家数量繁杂、产品规格混乱、…

2025年知名的粉末TAIC交联剂厂家推荐及选择指南

2025年知名的粉末TAIC交联剂厂家推荐及选择指南 在聚合物材料工业中,交联剂TAIC(三烯丙基异氰脲酸酯)是提升高分子材料性能的关键助剂,广泛应用于橡胶、塑料、涂料等领域。随着市场需求的增长,选择一家可靠的TAI…

2025年热门的闭式循环真空机组厂家最新权威实力榜

2025年热门的闭式循环真空机组厂家最新权威实力榜闭式循环真空机组作为现代工业生产中不可或缺的关键设备,在半导体制造、医药生产、化工工艺等高科技领域发挥着重要作用。随着中国制造业向高端化、智能化方向发展,市…

2025 年锅炉生产厂家最新推荐排行榜:聚焦实力企业,解析优质锅炉及配件选购方向锅炉耐磨陶瓷弯头/锅炉落煤管下渣管/锅炉空预器套管公司推荐

引言 在工业生产中,锅炉及配套配件是保障能源转换效率与生产稳定的关键设备,广泛应用于电力、冶金、化工、纸业等多个核心领域。当前市场上锅炉生产厂家数量激增,但产品质量、技术水平与服务能力差距悬殊,部分厂家…

2025 年北京训犬学校最新推荐排行榜权威发布,聚焦专业实力与服务口碑精选机构助养宠人科学训犬北京训犬师/北京上门训犬培训班推荐

引言 随着养宠家庭数量逐年攀升,狗狗已成为许多家庭不可或缺的成员,但狗狗外出捡食、扑人、暴冲、在家乱拉乱撒等行为问题,却让不少养宠人陷入困扰,不仅影响家庭生活和谐,还可能带来安全隐患。当前市面上训犬机构…