我正在 ASP.NET 中设计文件服务器应用程序。我必须上传一个大小为 100MB 的文件,然后将其保存到 varbinary(max)
中的 SQL Server 2008 数据库中。必须在数据库中保存文件。我正在使用 FileUpload
控件。请建议我如何处理这么大的文件?
更新
任何代码示例都会有很大帮助,任何代码示例?
如何分块读取文件?
最佳答案
您可以通过将特殊的 web.config 拖放到该目录中来更改目录及其子目录的默认限制 (4mb)。这样您就不必让您的整个站点允许大量上传(这样做会使您容易受到某种类型的攻击)。
这是一个来自生产应用的示例。这个设置为 200mb:
<?xml version="1.0"?>
<!-- Nested this web.config here to allow for huge uploads (up to 200mb) -->
<configuration>
<system.web>
<httpRuntime maxRequestLength="200000"/>
</system.web>
</configuration>
嵌套 web.configs 没有任何负面影响——您现有的 web.config 设置仍将在整个站点范围内工作,并且从该目录开始,这些 httpRuntime 设置将被继承。
在处理上传的页面上,确保您的 ScriptTimeout 高于正常值。这是以秒为单位的:
Server.ScriptTimeout = 1200;
我喜欢在页面而不是 web.config 上设置它,因为它将增加的超时隔离到这一页。
在 SQL 方面,varbinary 列最多可以有 2 个演出,所以你可以去那里。
更新:我已经对 50 多个 meg 文件使用了这种方法,但是在 100 meg 点标准方法可能会崩溃。有很多可用的第三方控件可以从那里接管,但我可能会仔细研究 Telerik 的 RadUpload,因为它们是一个质量名称并且看起来非常精致:RadUpload
至于你关于分块读取文件的更新,如果你真的想自己写,Bobby D 指出了这篇文章:Uploading Large Files Using an HttpModule
关于c# - 如何上传100MB的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823896/