You won't be able to do this if you're downloading from a CDN. Which is exactly where you would host large files, for which progress reporting really matters.
Not sure about you, but to me "XmlHttpRequest" in my request handling code feels less dirty than "x-amz-meta-". But to each their own I guess.
Check CloudFlare, Akamai, ...