La procédure d'upload est simple, pour chaque fichier indiquer dans le input de type file (le formulaire ayant la valeur de l'attribut enctype à multipart/form-data ) le navigateur se charge de le chercher de la machine du client, de le serialiser (avec une fonction genre file_get_contents, dépendant du langage d’implémentation du browser) et ensuite l'attacher à la réponse (sous forme d'entités http).
On peut toutefois avoir la taille total du fichier est d’accéder à l’entête
Content-Length de l'entité concernée, cela est possible par un langage côté serveur (comme PHP), Flash... Ajax se charge d'interroger un script serveur qui lui donnera les infos nécessaires.
Vu que tu ne peux pas utiliser APC et que tu n'aimes pas uploadprogress, je conseil d'utiliser une solution flash.
YUI Uploader serait un bon choix à mon avis ;)