如何上传100MB的文件

本文关键字:文件 100MB | 更新日期: 2023-09-27 17:54:10

我正在ASP.NET中设计一个文件服务器应用程序。我必须上传一个大小为100MB的文件,然后将其保存到varbinary(max)的SQL Server 2008数据库中。必须将文件保存在DB中。我用的是FileUpload控制。请建议我如何处理这么大的文件?
UPDATE
任何代码示例都会有很大帮助,任何代码示例?
如何读取文件块?

如何上传100MB的文件

您可以通过删除一个特殊的web来更改目录及其子目录的默认限制(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。配置仍然可以在站点范围内工作,并且从这个目录开始,这些httpRuntime设置将被继承。

在处理上传的页面上,确保您的ScriptTimeout值高于正常值。以秒为单位:

Server.ScriptTimeout = 1200;

我喜欢把它设置在页面上而不是网页上。配置,因为它将增加的超时隔离到这一页。

在SQL方面,varbinary列可以高达2 gb,所以你很好去那里。

Update:我已经在50兆以上的文件中使用了这种方法,但是在100兆的文件中,标准方法可能会失效。有很多第三方控件可以从那里接管,但我可能会仔细看看Telerik的RadUpload,因为他们是一个高质量的名字,它看起来非常精致:

如果你真的想自己写的话,那么Bobby D指出了这篇文章:使用HttpModule上传大文件

. NET对文件上传的默认限制为4MB。本文将介绍如何更改该默认值,并讨论上载大文件的一些问题。

试试这个:在ASP.NET中上传大文件。

如果有帮助请告诉我。

几年前(在ASP 1.1?),我使用这个控件,它是伟大的。

看到http://krystalware.com/Products/SlickUpload/

http://krystalware.com/Products/SlickUpload/Documentation/concepts/uploading-sql-server.aspx

因为你使用的是SQL Server 2008的varbinary列的2gb最大值,你应该很好。任何常规的上传脚本都可以工作。当你进行如此大的上传时,底层的HTTP或TCP/IP连接可能会成为一个问题,但你真的无能为力。

将其分解为部分,为每个部分分配一个序列号,在服务器端接收到文件后(假设DB存在)收集,根据序列号对部分进行排序,并通过剥离序列号重新连接它们。希望你不会超时,如果这是唯一的问题!也许您可以为多个部分的上传创建TPL,并以相同的方式重新加入它们!