Why do browsers still not have file upload progress meters?

It’s 2008.

Firefox 3 was just released – years of work, thousands of bugs fixed, new features thrown in.  No file upload progress meter.

IE7’s been out for awhile, but I don’t have a copy here handy to test.  My memory is telling me it doesn’t have one, or if it does, its very unobtrusive and not immediately apparent.

Opera 9.5 was recently released.  No file upload progress meter.

Konqueror 3.5 – no file upload progress meter.

It’s too late for me to check Safari2 – but I don’t think it’s got one.  I don’t have Safari3 on a Mac, so *maybe* it’s got one, but I doubt it.  I think I’d have heard about it if it does.

This current tirade stems from implementing a file upload progress meter in PHP5.  Yes, PHP5.2 has some hook, and there’s a PECL extension.  However, there’s *0* documentation on it, and the few pages Google turns up are mostly people saying “it doesn’t work!” and a few “hey it works!” with little in between.  I have one other option, I think – the APC cache system apparently also has file upload progress functionality in it now.  I was hoping to avoid it, because 1) I think it might have conflicted with the ioncube encoder on the machine and 2) I was really hoping to use an extension that just did the one thing I needed, not a bunch of other stuff as well.

I realize this is partially a PHP issue I’m ranting about, but it’s ultimately a hacky workaround to a basic piece of functionality that browsers should support.  The browser is pushing the file up – it has a notion of how many bytes have been pushed out to the network.  It is in a position to know the accurate size of the file in question.  Showing a local status of that information would be a faster experience, rather than adding a layer of AJAX calls to an upload screen.

I was at a developer panel in Ann Arbor back in 2003 and someone from MS was on the panel.  He had been on the IE team at one point, and I remember making the suggestion to him to pass the ‘upload progress bar’ back to the IE team.  It was a bit of an odd response – it wasn’t a ‘no’, but a bit of a bemused look, as if to wonder why people would want that.  He didn’t *say* that, and was cordial enough to take the suggestion, but it obviously did bugger all.  I was sort of figuring IE would have included it in IE7, then FF would eventually make it available as an extension, adding yet “one more extension” to the list of ‘gotta haves’, then they’d talk about how innovate FF is.  :)  Or perhaps even Opera might just slip it in under the radar in the past 5 years.

Alas, it seems that people that write browsers are somehow oblivious to the need app developers face in this area.  Perhaps they all live on petabit connections and/or only do development with local servers, and uploading 10 meg files takes 2 seconds.  In the real world, for most of us, it’s considerably longer and more painful, both on the development side testing, and for end users uploading.

I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Be Sociable, Share!

Tags: , , , , , , , ,

{ 70 comments to read ... please submit one more! }

  1. Tell me the guy who proposed a Flash solution (3rd from the top or something) didn’t also apologize for misspellings with a “sent from my iPhone”. OH, the irony.

  2. I think a simple answer would be they’re all trying to agree on how to consistently expose the progress information to JS. I think the specification the world is waiting on is:


    I think they’re continuing in the wrong direction. The addition of the XMLHttpRequestUpload seems like step in the wrong direction. There is an standardized protocol for the HTTP request process, and the XMLHttpRequest object should better represent that in it’s own structure rather than trying to bolt on upload progress handling as a specific interface. The important events we’re looking for here are monitoring the client request progress and server response progress.

    I think a more natural reflection of the underlying would be extending the object to to have event listeners for both the request and response progress. The natural reflection of the protocol would, hopefully, be easier to understand and learn for web developers who are already familiar with the HTTP protocol.

  3. frustrated uploader

    I’m am completely baffled as to why this isn’t implemented (even as a Firefox extension!!!) As am writing this, I sit here waiting for a 90mb video to finish uploading to YouTube. They provide no AJAX upload indicator, so I’m clueless as to when this will finish. It could be going at 10kbps for all I know.

  4. I upload big (~ 2 gb) file via standart . How many time is required? I dont know. Stupid develoreps.

  5. It might be because the HTML standards doesn’t specify anything about file upload. Alternative could be an HTTP upload applet that provides the progress bar and others useful features not available in browser such as compression before upload, resume broken upload and more.


  6. well i see my progress in Opera while uploading (through php for example), i don’t see the prob ><

  7. I am wondering why the progress bar doesn’t show up on gmail uploads using the latest Firefox (that uploads on its own). Do I need to update anything else? Thanks!!

    Greetings from Mexico!! =)

  8. Perhaps upgrade Flash? The upload bars are done with Flash.

  9. The kicker is that Firefox DOES show a progress bar on the status bar when uploading, but it doesn’t show any progress during an upload and just appears constantly “empty.”

  10. “when you upload, it’s the server that counts the data. data packets might be lost on their way to the server, so the actual amount of data that has been uploaded by your browser is completely irrelevant. ”

    Complete bullshit. TCP makes the receiver send acknowledgments to the sender.

  11. Chrome does show the upload progress by default.

  12. use Google Crome :)

  13. Notice when the post was posted – nearly 2 years ago. Yes, chrome does it – now – it’s just shameful that it’s taken – oh – 14 years of browsers before the end users were graced with something so fundamental.

  14. Christopher Head

    I’d like to point out that, at least in Opera 10.10, you can change the preferences for how the progress bar appears between “Show inside address bar”, “Pop-up at bottom”, “Simple”, and “None”. The first, and presumably the second since it looks the same just in a different place, DO SHOW FILE UPLOAD PROGRESS (and also speed). This is something I’ve wished existed for quite some time, and while I always used to use Simple, I’m now going to change to Show inside address bar for just this reason. To set this, go to Tools/Appearance/Toolbars.

  15. Were you kidding? Opera always has it and had it.

  16. As pointed out by John, Firefox does have a progress bar for upload, but it’s broken since the end of 2004.
    See bug 249338 (https://bugzilla.mozilla.org/show_bug.cgi?id=249338)

  17. Hey,
    I’ve made an add-on for Firefox to display current uploads progress. Since it’s in the AMO page waiting for approvals, I’ve made it available from my blog: http://www.alfersoft.com.ar/blog/2010/08/26/firefox-add-on-uploadprogress/

{ 3 Pingbacks/Trackbacks }

  1. Блог без заголовка » Silicon Valley Report in Russian » Вещи, которые броузеры не умеют дела
  1. Lessons learned from a reddit overload | Michael Kimsal’s weblog
  1. Links for this week : Peter Breuls’s Weblog

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>