Ideal way of uploading huge files in ASP.NET

How to accomodate uploading huge files in ASP.NET. To quantify the term 'huge', I mean something around 500 MB per user.

Since this is a photo studio portal website, I also need to take into account regarding concurrent users and other server equilibrium factors and hence I don't think I can just increase HttpRuntime values in machine.config or web.config just in ad hoc fashion.

If ASP.NET can not scale up, can some workaround be done using ASP or PHP or Perl technologies. The bottomline of the problem is that the application would run in ASP.NET. While an upload is encountering, the handler above would process that and return the processing to the main thread.

Any clues?
LVL 15
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Michel PlungjanIT ExpertCommented:
How about letting them mail you a CD or letting you download?
If their connection isn't fast at uploading, it would take prohibitably long time to upload, no?

I don't think I would sit around waiting for my ADSL line to upload 500MB with my 256K up
I think the gist of mplugjan's suggestion is the right track -- having some separate mechanism for uploading files sounds more appealing than trying to do it within the website.  Now, that doesn't mean it can't be done with software, but a kind of "upload in the background" application might be desirable, perhaps something as simple as an old-fashioned FTP dropbox.

I agree with your thinking that trying to coax the server into sometimes allowing hours-long uploads while still behaving "normally" for other pages on the site just doesn't seem practical.
deepaknetAuthor Commented:
The solution should be an online solution. Hence, I don't think the CD solution befits the perspectives of the problem. However, how about some other related technologies like ISAPI and coexisting the same with the current framework.
Become a Certified Penetration Testing Engineer

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

Your first problem is for how to keep the connection open for long enough to get the transfer done, and your second one for how to resume from where they left off when a connection closes for whatever reason (would suck to get 499Mb then loose your wireless connection for a few secs when uploading).  I'd suggest looking at various transport mechinisms including HTTP and FTP but there may be others like RSYNC or write your own.

One thing I have used in the past is to get the user to upload using ftp, then when they have finished get them to push a button on a webpage that will move or copy the files out of the ftp area and process them as needed.  I also provide a HTTP upload web form too.   If they are using IE, you can provide them with a link in this form:


and they will be able to drop the files in to that window (I'm not sure if this works on a mac though).

Good ftp clients may allow you to resume from where you left off.

The only other option I know of would be to write your own client server app.  Not the sort of thing I can cut and paste here.  I don't think using a brower doing HTTP POST will not be reliable enough for 500Mb and multiple files.


Michel PlungjanIT ExpertCommented:
Peeldog: That method with the username:password is alas being discontinued. The last place I have seen it work in in Mozilla
deepaknetAuthor Commented:
I got it through myself using PHP and a judicious balance of configuration using MemoryLimit and PostMaxSize. It works for a good limit of 500 MB.

deepaknetAuthor Commented:
A Delete Request has been raised to CustomerSupport.
deepaknetAuthor Commented:

The solution is configurable with PHP. With Windows and PHP, you can have the following settings to work upto 100 MB. (max_input_time and maximum_execution_time)

Of course, you need to ensure a correct combination of RAM size tobe allowed besides isolating the application pool.
Closed, 250 points refunded.
Community Support Moderator

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Languages and Standards

From novice to tech pro — start learning today.