首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将大文件上传流式传输到ASP.NET MVC

将大文件上传流式传输到ASP.NET MVC
EN

Stack Overflow用户
提问于 2009-06-25 20:58:26
回答 1查看 22.1K关注 0票数 59

对于我正在开发的一个应用程序,我需要允许用户通过我们的网站上传非常大的文件--也就是潜在的几十亿字节。不幸的是,RAM似乎在开始服务之前就将整个请求加载到ASP.NET中--对于这样的应用程序来说并不是很理想。值得注意的是,尝试通过如下代码来规避此问题:

代码语言:javascript
复制
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中的心态。有没有一种简单的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-10 21:36:54

事实证明,我的初始代码基本上是正确的;唯一需要更改的就是更改

代码语言:javascript
复制
request.ContentLength = clientRequest.InputStream.Length;

代码语言:javascript
复制
request.ContentLength = clientRequest.ContentLength;

前者在整个请求中传输以确定内容长度;后者只检查Content-Length报头,这只要求报头已经完整发送。这允许IIS几乎立即开始流式处理请求,从而完全消除了原始问题。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1046230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档