c# - 如何上传100MB的文件?

标签 c# asp.net sql-server file-upload

我正在 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/

相关文章:

c# - 使用 xPath 遍历项目

sql-server - SQL Server 2005性能问题

sql-server - 对 SQL 表进行排序以显示第一行和所有其他行的总和

c# - 如果我有一个对特定类型的未知指针引用,我如何获取底层的特定类型?

c# - 使用 JsonResult 重定向到操作

c# - 跟踪更改并从 Mysql -> MSSQL 进行更改的最佳方法

asp.net - 移植到 ASP .Net

javascript - 使用ScriptBundle可以调试吗?

c# - Unity3D:如何控制生成器,等待波完成时不会停止实例化

python - 从 SqlAlchemy 调用 MSSQL 存储过程