今天突然遇到一个很郁闷的问题,本来想贴图的,不知道为什么,CSDN 上传的图总是变得扭曲、走形的很厉害,乱七八糟的,所以无奈只得文字描述。1. 我有一个 page,里面有一个 <input type="file" id="BrowseFile"> 的 html 控件,点击该控件,选择本地的一个 zip 或者 cab 文件。
2. 点击 Add 按钮(服务器端),server 端会将这个 BrowseFile.PostedFile 转成 byte[],放入 Session。然后在 listbox 里面显示所添加的文件名。问题是:我现在点 file 控件,选择的文件只要是大于 1M 的,没精确算过,大致只要是 2M 以上;然后点击 Add 按钮就没有反应了,页面就卡死了!连断点都进不去,IE Tab页上的一个小圈圈就在转啊转啊转的。更奇怪的是,我在 Add 按钮的 Click 事件入口处设置断点,选择的文件大小只要是 2M+ 的,点击该按钮断点都进不去!但是当我按 Esc,让页面停止刷新,居然又跑到 Click 事件入口处的断点了。这是怎么回事啊?太奇怪了,郁闷死了,弄到现在,我实在是想不出招了呀,现在已经凌晨 1 点多了,没办法,要睡觉了,所以到 CSDN 上求助。
2. 点击 Add 按钮(服务器端),server 端会将这个 BrowseFile.PostedFile 转成 byte[],放入 Session。然后在 listbox 里面显示所添加的文件名。问题是:我现在点 file 控件,选择的文件只要是大于 1M 的,没精确算过,大致只要是 2M 以上;然后点击 Add 按钮就没有反应了,页面就卡死了!连断点都进不去,IE Tab页上的一个小圈圈就在转啊转啊转的。更奇怪的是,我在 Add 按钮的 Click 事件入口处设置断点,选择的文件大小只要是 2M+ 的,点击该按钮断点都进不去!但是当我按 Esc,让页面停止刷新,居然又跑到 Click 事件入口处的断点了。这是怎么回事啊?太奇怪了,郁闷死了,弄到现在,我实在是想不出招了呀,现在已经凌晨 1 点多了,没办法,要睡觉了,所以到 CSDN 上求助。
解决方案 »
- 页面做完后,查看源代码,有个<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=“”
- SQLSERVER2000连接上的问题。详情请看内容
- 如何选择文件夹中自动获取文件夹中的文件
- 项目解决方案中的“引用”,是代码中的using是什么关系呀?
- 线程委托问题
- C# winform中怎样把TextBox中值显示在DataGrid中指定的一列
- string的问题
- 怎样子使用c#连接公网上的sql server 数据库
- C#查找Access指定日期的数据
- 紧急! 下午要去配台新电脑,麻烦给个配置(尽量用国产货)。
- 使用dataadapter.tablemapping.columnmapping添加数据出错
- 怎么改变visibility的值?
默认的上传大小是4M.
如果需要上传更大的文件,必须采用其他方法.比如FTP,或者是其他组件比如ASPUPLOAD对于asp.net,默认只允许上传2M文件,增加如下配置,一般可以自定义最大文件大小.
<httpRuntime
executionTimeout= "300 "
maxRequestLength= "40960 "
useFullyQualifiedRedirectUrl= "false "/> 解决的方法是利用隐含的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)
{
.....
}
} 上传
<system.web>
<httpRuntime maxRequestLength="40960" executionTimeout="300" useFullyQualifiedRedirectUrl="false"/>
</system.web>
</location>
但是,我有一个问题不是很明白,想请教一下,useFullyQualifiedRedirectUrl 这个参数是什么含义?我google 了一下,是这样解释:“指示客户端重定向是否是完全限定的(采用 { HYPERLINK "http://server/path " } 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。”Hmm......这句话不太明白。这个值默认值是不是 false?谢谢。