上传文件大小限制的问题
我想上传大于4M的文件 已经修改了配置文件的<httpruntime executiontimeout="300" maxrequestlength="40960"
usefullyqualifiedredirecturl="false"/>
可是没其作用,而且我把maxrequestlength的值设置为1的时候 还是可以传下于4M的文件,换句话说这个值就没其作用
然后网上给出了一段代码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)
{
.....
}
}
我不懂这是什么意思,也不知道该怎样用.....在下真心是个asp.net 新手还往各位有爱心人士指点一二,最好是能给出个实例
------解决方案--------------------貌似是asp.net本质论里面的一段代码 接管了application里面post过来的数据 然后还要模拟这些数据继续往之后的application往下传 蛮长一段代码没仔细看估计也得看半天 如果你真是新手的话这些东西还是等用熟了再看 坦率说有些东西是得要一定积累才能看懂的
------解决方案--------------------在下也水平有限~~~怕解释不清楚误人子弟~
------解决方案--------------------超大文件还是用第三方控件吧。传统HTML方式上传会有很多问题。
------解决方案--------------------这段代码的作用,我的理解,主要是为了防止上传文件大小超出config里的限制时,ie出现文件找不到的错误页面。
基本的思路就是,如果上传文件大小超过限制,已经上传的字节必须都读进来,然后扔掉。满足if (!wr.isentireentitybodyispreloaded())
条件的就是上传文件大小超过限制的情况,while (wr.readentitybody(bs2,n) >0)
循环里就是把上传的字节都读到bs2里,却不用,这样可以避免ie报错,但是iis已经产生了exception,所以还必须在global.asax.cs里的application_error里再捕获一下exception,清除掉以后,就可以转到用户定义的友好的出错页面去了。
参考我回的这个帖子:
asp.net中c# 怎么做当上传打文件时提示上传文件太大不能上次
------解决方案--------------------修改maxrequestlength大于4m,难道还是会抛异常?
------解决方案--------------------看看这个连接,有可能需要在iis里设置:
http://www.banmanpro.com/support2/File_Upload_limits.asp