File too big when uploading a file with the asp:FileUpLoad control

Bob Avallone picture Bob Avallone · Jul 13, 2011 · Viewed 15.5k times · Source

I am using the asp:FileUpLoad to upload files in my asp.net c# project. This all works fine as long as the file size does not exceed the maximum allowed. When the maximum is exceeded. I get an error "Internet Explorer cannot display the webpage". The problem is the try catch block doesn't catch the error so I cannot give the user a friendly message that they have excced the allowable size. I have seen this problem while searching the web but I cannot find an acceptable solution.

I would look at other controls, but my managemment probably wouldn't go for buying a third-party control.

In light of answer suggesting ajac, I need to add this comment. I tried to load the ajax controls months ago. As soon as I use an ajax control, I get this compile error.

Error 98 The type 'System.Web.UI.ScriptControl' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

I could get rid of it although I did add 'System.Web.Extensions'. So I abandoned Ajax and used other techniques.

So I need to solved this problem or a completely new solution.

Answer

Muhammad Akhtar picture Muhammad Akhtar · Jul 13, 2011

The default file size limit is (4MB) but you can change the default limit in a localized way by dropping a web.config file in the directory where your upload page lives. That way you don't have to make your whole site allow huge uploads (doing so would open you up to a certain kinds of attacks).

Just set it in web.config under the <system.web> section. e.g. In the below example I am setting the maximum length that to 2GB

<httpRuntime maxRequestLength="2097152" executionTimeout="600" />

Please note that the maxRequestLength is set in KB's and it can be set up to 2GB (2079152 KB's). Practically we don't often need to set the 2GB request length, but if you set the request length higher, we also need to increase the 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.)

For Details please read httpRuntime Element (ASP.NET Settings Schema)

Now if you want to show the custom message to user, if the file size is greater than 100MB.

You can do it like..

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.";
}