使用asp:FileUpLoad控件上传文件时文件太大

Bob*_*one 23 .net c# webforms file-upload

我正在使用asp:FileUpLoad上传文件在我的asp.net c#项目中.只要文件大小不超过允许的最大值,这一切都可以正常工作.超过最大值时.我收到错误" Internet Explorer cannot display the webpage".问题是try catch块没有捕获错误所以我不能给出user a friendly message他们已经删除了允许的大小.我在搜索网页时看到过这个问题,但我找不到合适的解决方案.

我会看看其他控件,但我的管理可能不会购买第三方控件.

根据建议ajac的答案,我需要添加此评论.几个月前我试图加载ajax控件.一旦我使用ajax控件,我就会收到此编译错误.

错误98"System.Web.UI.ScriptControl"类型在未引用的程序集中定义.您必须添加对程序集'System.Web.Extensions,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用.

我可以摆脱它,虽然我添加' System.Web.Extensions'.所以我放弃了Ajax并使用了其他技术.

所以我需要解决这个问题或一个全新的解决方案.

Muh*_*tar 30

默认文件大小限制为(4MB),但您可以通过在上载页面所在的目录中删除web.config文件,以本地化方式更改默认限制.这样你就不必让你的整个网站允许大量上传(这样做会让你受到某种攻击).

只需在该<system.web>部分下的web.config中进行设置即可.例如,在下面的例子中,我设置了最大长度2GB

<httpRuntime maxRequestLength="2097152" executionTimeout="600" />
Run Code Online (Sandbox Code Playgroud)

请注意,maxRequestLength它以KB为单位设置,可以设置为2GB (2079152 KB's).实际上我们通常不需要设置2GB请求长度,但如果将请求长度设置得更高,我们还需要增加executionTimeout.

Execution Timeout Specifies the maximum number of seconds that a request is allowed to execute before being automatically shut down by ASP.NET. (Default time is 110 seconds.)

有关详细信息,请阅读httpRuntime元素(ASP.NET设置架构)

现在,如果要向用户显示自定义消息,如果文件大小大于100MB.

你可以这样做..

if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentLength > 104857600)
{
    //FileUpload1.PostedFile.ContentLength -- Return the size in bytes
    lblMsg.Text = "You can only upload file up to 100 MB.";
}
Run Code Online (Sandbox Code Playgroud)

  • @Bob您的问题是IIS处理这些限制而不会将控制权交还给您的Web应用程序.`maxRequestLength`用于保护IIS免受恶意请求的攻击,这些恶意请求试图通过发布大量数据来降低它.正如穆罕默德所描述的那样,你唯一的解决方案是为`maxRequestLength`设置一个比`ContentLength`更大的值,从而仍然接收上传的文件,但是告知用户由于尺寸限制你不会处理它. (2认同)

Ova*_*tri 0

这似乎是会话超时的问题,增加会话时间然后重试。您可以在 web.config 文件中设置会话超时