To me, adding the ability to upload files is always such a hassle. I think it’s because I’ve only had reason to do it a few times in my career, so I never really established a solid pattern (though they typically used COS on the Java server side). 

There’s an interesting AJAX uploader JQuery plugin that really simplifies the front-end, and better yet, comes with sample back-end code for Perl, PHP, CF and, most importantly for me, Java. It executes the Java side as a typical HttpServlet, so it should be easy to incorporate into your stack.

On the front-end, it supports drag-and-drop in Chrome and Firefox, with a progress bar in Firefox, Chrome and Safari. 

So, what if you want to support Internet Explorer? Easy! Check out Google Frame, and make WebKit your go-to renderer on IE.