Why Are Web Uploads So Painful?

As mentioned by other commenters, I believe the problem, primarily, to be that originally the people providing content to a site, and the people visiting the site, were very distinct subsets of of people with no overlap. Sure, that’s not true today- But every site which allows uploads has their own way of doing it, and it would be unreasonable to ask the web browser to abstract out each individual site’s uploading methodology.

I’m hoping firefox (or IE- as much fun as elitism can be, lets face it, it’s a major player in the browser space) implement some sort of drop-box for files, say, as a side window- and then, via a little javascript, the website could tell the browser “if a user drops a file in here, this is what we’d like you to do with it”. Flock has “2.0 support”, as buzzwordy as that may sound- but they just took a few of the more popular services and abstracted the API’s into the browser. I’m saying, if this was standardized, we wouldn’t need flock. Drag drop a video into the drop-box when you’re logged into youtube. Wait a bit for it to finish uploading (sadly, this isn’t a solution for the upload bandwidth problem. Living in a college dorm or paying out the nose are pretty much your two options there), and be taken to a special page where you can add some metadata.

Also, as a side note, AOL came out with a photoservice recently called BlueString, backended by their “xdrive” backup service. I haven’t tried it yet, but it seems like an interesting way to go, dropping files into a mapped drive on your desktop and seeing them appear on the website…

It’s always been a joke among my friends when we need to send videos to each other that’s NOT in some miserable quality provided by YouTube: It’ll get there faster by snail mail.

While on that topic, considering how we’re gradually moving to HD videos, I always thought YouTube was something of a step backwards and poor upload mechanisms of the web today is to be blamed largely for that.

And what about online games? I takes as much download as upload to game online.

“My digital camera makes 848x480 or 640x480, 30 FPS in Quicktime format. Considering how bad Quicktime is, the video is almost 2 MB per second.”

Corrected version:

My digital camera makes 848x480 or 640x480, 30 FPS in Quicktime format. Considering how bad the camera’s encoder is is, the video is almost 2 MB per second.

Quicktime is a file format and media wrapper, with overhead measured in bytes or kilobytes, not megabytes. It is not a codec. It supports many of the best codecs (H.264, which is what youtube will convert your uploaded video too in any case, or even WMV of FLV codecs if you buy a plugin). This is in contrast to, say, WMV, which I believe only allows the WMV family of codecs. Most likely, your camera is using a ten-cent video encoding chip and writing out the equivalent of MJPEG inside a .mov wrapper. That being said, the priorities for a camera encoder chip are:

  1. Get the video saved with as little quality loss as possible
  2. Keep the cost down, because the quality/size of the encoded video is not generally a selling point and is easily “fixed in post” (ie, on the user’s computer). It doesn’t make sense to raise the cost of a consumer camera by $1 to provide better quality/size as more consumers will pass up the camera over that dollar difference than will buy the camera due to the encoding difference.

To be able to provide adequate support for HTTP upoads, the HTTP protocol needs to be changed. Browsers do not send the full size of the upload from beforehand, therefore servers do not provision for this and do not know how to handle it either.

Something else I’d love is the ability to select multiple files from the “Select File” dialog. It’s really annoying doing the whole Browse, select, Browse, Select when you’re uploading a lot of files

Opera has an upload progress indicator. It isn’t perfect, but it’s something. You can expect it to be cloned in Firefox in 2009 or 2010.

Why not switch it from HTML forms to C++ applications?

Instead of relying on the web browser and squabbling over different methods, why not just an application to slice-and-dice your video file then upload the chunks (doing this automatically). The server can then join everything up again.

Make it simple, divisible by 20, giving you 5% chunks. 100MB = 20 files of 5MB.

The “warez” scene uses this method, typically slicing everything up into 14.7MB RAR files. If something goes wrong with the connection, one is corrupt, it’s quick and easy to fix.

Just a thought.

Spot on Jeff

Look what I found:
https://bugzilla.mozilla.org/show_bug.cgi?id=255014

What about a torrent solution? Wouldn’t it be nice if you could upload just few kb to tell the server where to get the file and then forget about bandwidth caps, network glitches or even system crashes? even if you’re the only seeder it’s still the most convenient way.

“Wow, this POST is over 5 MB, so I’ll show the upload progress dialog.” Seems like the easiest solution from the Firefox side. They don’t have to treat all POSTs the same.

In fact, GETs are already treated differently. If it’s a “large” file, it goes in the download manager, and if it’s small, it doesn’t.

I total agree. And this is why we build all upload forms with Telerik’s upload/progress bar control. It’s pretty great. Uses AJAX and you can program it to provide as much, or as little feedback as you want. Check it out at telerik’s product demos at telerik.com

The IE download example is presented downloading the Firefox installation file! Very subtle indeed!

The conclusion of the article calls for solutions via browser plugins “such as Silverlight and AIR.”

A minor knit, but AIR is not a browser plugin. If you’re looking for Adobe’s “sophisticated browser plugin”, you already have it - it’s Flash.

AIR is to .NET as Flash is to Silverlight. Roughly.

mozilla DOES provide the upload feedback. the little progress
indicator in the status bar shows how much of the file is transferred
at the moment.

This doesn’t appear to work. I just initiated an upload of a 41 mb
video to Google Video with Firefox. The progress indicator in the
status bar immediately shoots to about 65%-- and sits there, as far
as I can tell.

i think this is because google video uses some javascript hack to monitor the upload progress, effectively disabling the browser’s own indicator. i can recall it worked fine for “plain” upload forms without javascript.
so the course of events was: it worked well, javascript broke it (by using out of band requests), now the browsers should find a way to fix it again…

The main ‘pain’ with uploading is the limited speed. Hopefully this will improve over time (you can already get 1-2meg uploads with some ADSL providers).

The upload status can be resolved by using some form of applet, for example, I use a Java applet which also supports drag and drop. Facebook and MSN use various applets that are good.

You can also get upload status with normal post/put methods however, for various technical reasons, this requires you to patch Apache.

While reading the article i thought - what about ajax?

And Gregory Magarshak already posted a link above on how to realize this with mootools (javascript framework). Works like a charme and is the better way then using flash imho.

the polarizer

I definitely agree with you Jeff, that’s why on my website(www.tripntale.com) to be launched within a few days, my main goal is to let users upload by select multiple files at once and show real progress while the upload is in progress.

sorry, I forgot to mention that I’m using both Flash control and Ajax to show uploading progress