gpt4 book ai didi

c# - 上传大文件(超过 4GB)ASP .NET CORE 5

转载 作者:行者123 更新时间:2023-12-04 14:06:36 24 4
gpt4 key购买 nike

一直在关注 MS 提供的文件上传示例,以及此处的各种其他示例;经过多天的尝试,我被困住了。

我需要能够上传最大 10GB 的文件 - 我正在使用流式物理方法。我已经更改了请求大小限制。我使用的是 IIS,所以我关闭了请求过滤以获取超过 4GB 的文件。但是我选择的任何超过 4GB 的文件, Controller 都会命中,然后出现意外流结束错误。我有 DisableFormBinding 属性,我试过启用缓冲,我试过忽略 AntiForgeryToken - 我没有想法。

超过 4GB 的文件无法通过流处理,我是否需要使用旧的分 block 方法?

最佳答案

  • 如果您有那么大的文件,切勿在代码中使用 byte[]MemoryStream。如果您下载/上传文件,则仅对流进行操作。
  • ASP.NET Core 支持上传一个或多个文件,对较小的文件使用缓冲模型绑定(bind),对较大的文件使用无缓冲流式处理文件。

文件上传场景上传文件的两种通用方法是缓冲和流式传输。

1 - 缓冲

整个文件被读入 IFormFile ,这是用于处理或保存文件的文件的 C# 表示。

文件上传使用的资源(磁盘、内存)取决于并发文件上传的数量和大小。如果一个应用程序试图缓冲太多的上传,网站会在内存或磁盘空间不足时崩溃。如果文件上传的大小或频率耗尽了应用程序资源,请使用流式传输。

Any single buffered file exceeding 64 KB is moved from memory to a temp file on disk.
  • 如果在没有删除之前的临时文件的情况下创建了超过 65,535 个文件,Path.GetTempFileName 将抛出 IOException。的极限65,535 个文件是每个服务器的限制。有关 Windows 操作系统上此限制的更多信息

2 - Streaming

文件从多部分请求中接收,并由应用程序直接处理或保存。流式传输不会显着提高性能。流式传输减少了上传文件时对内存或磁盘空间的需求。

更多详情:Upload files in ASP.NET Core 5

我认为this可能有帮助:Upload Large Files To MVC / WebAPI Using Partitioning

关于c# - 上传大文件(超过 4GB)ASP .NET CORE 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68150360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com