在ASP.Net中,大文件上传一直是个棘手的问题。在WEB.Config文件中有对上传文件大小的限制。对于稍大点的文件可以适当更改配置,但我们不能无限制的括大它,这是由ASP.Net的上传机制所决定的,因为.Net是把文件全部加载到内存中才可以进行操作的(MSDN上说,对于过大的文件实际上也还是要放在硬盘上缓冲的)。对于此问题,最简单的解决办法是使用别人开发的组件,如:
例如,若想将上传文件的上限提高至20MB,我们只需要这样修改:
- FileUploader.NET (MediaChase公司,$310以上)
- RadUpload (Telerik公司,$249)
- NeatUpload (免费,遵守LGPL协议)
但有时候,我们并不想使用组件,那还有一个解决办法,在服务器端截获上传事件,并把数据分块上传。代码如下:
还有需要在WEB.Config中配置一下:
这样我们的代码才会起作用。