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?
Closed, 250 points refunded.
Community Support Moderator
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.
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

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.
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.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.