Sun, 20 September 2009
This is not a new thing by any means, but I found it difficult to find a single place where it was explained and the code made available, so here we go ...
This can be done by an HttpModule which will interrupt the usual request flow and allow for progress to be monitored. The key is to get hold of the HttpWorkerRequest and read the data as it comes in, keeping a track of the number of bytes received against the total gives you the progress.
Posting the file(s) and checking the progress can be done using AJAX, I've used the jQuery Form plugin.
You need to decide how big the files you are going to allow will be. You can increase the maxRequestLength to ~2GB in your web.config if you like, but fundamentally you will be limited to the physical memory available to store the request in a byte array when passed on as preloaded content in step 6 above, on a shared server this will be considerably less than 2GB.
<system.web> <otherstuff /> <httpRuntime maxRequestLength="2097151"/> </system.web>
You will need to register the module in your web.config httpModules
<system.web>
<httpModules>
<others />
<add name="ProgressModule" type="Antix.Web.ProgressModule"/>
</httpModules>
</system.web>Download the MVC project below, with all the code mentioned
Requires .NET 3.5, ASP.NET MVC 1.0
File Upload with Progress Example Project
p.s. the module can be used in non-MVC projects, its just the example is an MVC project.
Development, File Upload
Antix Software Limited is registered in England and Wales.
Registered Number: 3491105 Registered Office: 100-103 Church St., Brighton, BN1 1UJ
10 Jun 2010
Mani
The above post is indeep very useful. This has save lot of my time in solving the issues with uploading files which are more in Size(above 2MB).
Thanks a lot for the Information .