If you do not touch all sorts of flushes and server components, that can be done on the basis of the functionality offered by HTML5. The only problem is that it is introduced slowly and supported browsers sucks:
\r
1. Chrome: from the 5th (?) version added FormData (XHR2). You can now send files (despite the fact that to read the binary contents of a file is impossible, at least in the stable releases) XHR'ω (where, recall, need multipart). In earlier versions, you had to send the raw binary contents of the file, without any headers. Accordingly, the web servers didn't understand that they got the file, and generally does not processed the sent information (it had to be read from the input stream). Have the support of the XMLHttpRequestUpload, which allows you to monitor the download progress.
\r
2. Firefox: starting with 3.5 (?) you can read the contents of files, there is a special method to send binary data. So the absence of bad FormData does not affect — multipart request, you can generate yourself. XMLHttpRequestUpload are also supported.
\r
3. Safari: a point can not say, but File, FormData, there XMLHttpRequestUpload implemented (5.0 — 7533.16).
\r
4. Opera, IE: apparently not even heard of such. They will have to do the old-fashioned way — flash / ServeRAID / etc.
\r
From the category to read:
\r
javascript.ru/blog/Brmaley.ee/FileAPI — material is somewhat outdated*
\r
www.thecssninja.com/javascript/gmail-upload — material is somewhat outdated*
\r
code.google.com/p/html5uploader/ — library of D&D, but, in my opinion, it is also somewhat outdated* :)
\r
* — this refers to support such a thing as FormData.