在asp.net C#中应用服务器端的文件上传大小限制

时间:2012-03-08 09:53:27

标签: asp.net c#-4.0 asp.net-4.0

我正在应用文件上传大小限制,该用户无法上传超过30 MB的文件,并在超出限制时给他留言。 我正在使用以下代码。

if (fileUpload.HasFile)
            {
                if (fileUpload.PostedFile.ContentLength < 30 * 1024 * 1024) // 30 MB
                {
                    if (fileUpload.FileName != null && fileUpload.FileName != "")
                    {
                        UploadFile(fileUpload, "flv,mp3", out videoFileName, out uploadError);
                        if (uploadError != "")
                        {
                            lblMessage.Visible = true;
                            lblMessage.Text = uploadError;
                            return false;
                        }
                    }
                }
                else
                {
                    lblMessage.Visible = true;
                    lblMessage.Text = "File size exceeds the Limits. Please try uploading smaller size file.";
                    return false;
                }
            }

此代码在Visual Studio中运行良好,但是当我在iis上部署应用程序时,如果我提供超过30 MB的文件,它就不会给我任何消息,并直接上传文件。

我做错了。

此致 卡辛​​

4 个答案:

答案 0 :(得分:2)

在IIS7下运行时您可以在web.config文件中设置文件上载大小限制

<system.webServer>    
<security> 
<requestFiltering>                 
<requestLimits maxAllowedContentLength="10485760"/>   
</requestFiltering> 
</security> </system.webServer>

答案 1 :(得分:2)

您是否使用过标准的maxRequestLength配置属性?很可能它不适合您的需求,但在达不到文件限制的情况下,它可以更好地利用资源。

有关如何处理错误的解释,请参阅A better way of handling maxRequestLength exceptions

<system.web>
  <httpRuntime  maxRequestLength="31457280" executionTimeout="360"/>
</system.web>

答案 2 :(得分:1)

使用这样的代码,它看起来是这样工作的,我的意思是你的代码只有在完整内容发布到服务器时才会执行。您需要一些额外的工作来验证客户端的大小,或使用某些第三方插件,如uploadify

答案 3 :(得分:1)

只有在上传完成后才能检查上传文件的大小。请检查此链接http://forums.asp.net/t/55127.aspx