|
主题: asp.net文件上传的问题
|
5D荣誉斑竹
职务:普通成员
等级:2
金币:1.0
发贴:343
|
#12001/11/7 22:06:59
在使用asp.net上传文件的时候,我发现有这样一个问题:上传的文件大小有限制,好像是不能超过4m。 请问,如何能突破这个限制?
|
张无忌
职务:普通成员
等级:1
金币:0.0
发贴:18
|
#22001/11/8 21:13:43
這個應該是服務器對超時的反應時間所決定的!上傳這麽大的的東西,本來就不應該用web上傳。
|
5D荣誉斑竹
职务:普通成员
等级:2
金币:1.0
发贴:343
|
#32001/11/8 23:13:11
服務器對超時的反應時間?不大可能吧? 我在局域网内部试验,带宽是100m,怎么会有超时的反应? 另外,楼上的老兄,你不知道“领导的话都是对的”吗 :-)))
|
张无忌
职务:普通成员
等级:1
金币:0.0
发贴:18
|
#42001/11/9 0:11:48
呵呵呵呵!那我就不知道了! asp.net只是粗解一些,並不擅長呀。
|
BendisE
职务:普通成员
等级:1
金币:0.0
发贴:4
|
#52005/10/27 11:08:16
对于asp.net,默认只允许上传2M文件,增加如下配置,一般可以自定义最大文件大小.
<httpRuntime
executionTimeout="300"
maxRequestLength="40960"
useFullyQualifiedRedirectUrl="false"/>
如果还不行,可以使用思归提供的方案:
我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的,可以参考这个帖子研究一下产生这个错误的机理。
handling server error when upload file too large
解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据
IServiceProvider provider = (IServiceProvider) HttpContext.Current; HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest)); byte[] bs = wr.GetPreloadedEntityBody(); .... if (!wr.IsEntireEntityBodyIsPreloaded()) { int n = 1024; byte[] bs2 = new byte[n]; while (wr.ReadEntityBody(bs2,n) >0) { ..... } }
还有把你的代码贴出来这样方便解决
|