gpt4 book ai didi

asp.net - 将大文件上传到 ASP.NET MVC

转载 作者:行者123 更新时间:2023-12-03 05:44:41 25 4
gpt4 key购买 nike

对于我正在开发的应用程序,我需要允许用户通过我们的网站上传非常大的文件(即可能有很多千兆字节)。不幸的是,ASP.NET MVC 似乎在开始服务之前将整个请求加载到 RAM 中,这对于此类应用程序来说并不理想。值得注意的是,尝试通过如下代码规避该问题:

if (request.Method == "POST")
{
request.ContentLength = clientRequest.InputStream.Length;
var rgbBody = new byte[32768];

using (var requestStream = request.GetRequestStream())
{
int cbRead;
while ((cbRead = clientRequest.InputStream.Read(rgbBody, 0, rgbBody.Length)) > 0)
{
fileStream.Write(rgbBody, 0, cbRead);
}
}
}

无法规避将请求缓冲到 RAM 的心态。有没有一种简单的方法可以解决此问题?

最佳答案

事实证明我最初的代码基本是正确的;唯一需要改变的是改变

request.ContentLength = clientRequest.InputStream.Length;

request.ContentLength = clientRequest.ContentLength;

前者在整个请求流中确定内容长度;后者仅检查 Content-Length header ,只要求 header 已完整发送。这使得 IIS 几乎可以立即开始传输请求,从而完全消除了原来的问题。

关于asp.net - 将大文件上传到 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1046230/

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