asp.net-mvc – 为什么HttpPostedFile不像广告和缓冲区下载到磁
我使用标准
HTML< input>将大文件上传到ASP.NET服务器控制发布多部分表单数据.这是一个ASP.NET MVC应用程序.
根据MSDN,HttpPostedFile类开箱即用缓冲到磁盘:
我认为这意味着当我在我的控制器中访问HttpPostedFileBase时,当我访问HttpPostedFileBase的InputStream属性时,我可以在某处编写文件缓冲区而不必担心服务器内存不足,这显然是一种不可行的解决方案. 这里有一些伪代码,用于处理来自HttpPostedFileBase的每个传入文件. for(var i = 0; i< Request.Files.Count;i++) { var fileBase = Request.Files[i]; if (fileBase.ContentLength == 0) { continue; } // One thread per file ThreadPool.QueueUserWorkItem(state => { // Read from fileBase.InputStream },null); } 我的web.config的httpRuntime块如下所示: <httpRuntime executionTimeout="1200" requestLengthDiskThreshold="2097151" maxRequestLength="2097151" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" /> 我的实现工作,多个文件按预期上传,除了服务器消耗缓冲整个有效负载所需的相同内存量.我必须假设InputStream正在缓冲所有内容.当我上传的文件多于我的内存时,它可以预测会因OutOfMemoryException而崩溃.这是上传800mb文件时内存峰值的图像. 我知道我可以使用Flash / Silverlight小部件或编写自定义HttpModule来拦截上传并自己处理它们,但是如果HttpPostedFile做了MSDN所说的那样(或者我做错了),当前的要求将完美无缺. 解决方法
你为什么这么做
requestLengthDiskThreshold="2097151" 在配置?这是否强制服务器将所有上载保留在RAM而不是缓冲到磁盘? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 带有子项的ASP.NET自定义/用户控件
- asp.net-mvc – MSFT报告查看器(rdlc)是否可以使用MVC
- 【FastDFS】FastDFS和asp.net项目的结合
- asp.net – 当modal设置为TRUE时,jQuery UI对话框出现问题
- asp.net – 水晶报告数据源到业务层对象集合
- iis-7 – 主域和可信域之间的信任关系失败
- asp.net-mvc-3 – 模拟控制器动作单元测试的默认角色提供程
- asp.net – 如何在Visual Studio中生成Web服务的WSDL文件
- asp.net中符合SCORM的LMS
- ASP.Net缓存疑难解答 – CacheDuration属性似乎没有任何效果
- asp.net-mvc – 将DTO转换为ViewModel的位置?
- asp.net-mvc – 人们如何使用编辑器/显示模板与H
- asp.net-web-api – 如何在ASP.NET WebAPI RC中绑
- 如何在我的新ASP.NET网站中使用OpenID?
- asp.net – 防止加载MicrosoftAjaxWebForms.debu
- asp.net-core – 如何将在TagHelper流程方法中生
- asp.net-mvc-3 – 对复选框不起作用的MVC不显眼的
- asp.net-mvc – 如何将模型中的占位符文本添加到
- asp.net-mvc – 如何组合两个dataTextFields的Se
- ASP.NET core MVC动作过滤器执行顺序