Partant du principe que réinventer la roue c'est plutôt moyen (sauf si on veut spécifiquement créer une nouvelle roue bien spécifique avec un concept particulier ou pour apprendre comment créer une roue) tu peux te contenter d'utiliser le modèle de roue de quelqu'un d'autre. ;-)
Par exemple cette librairie sans dépendance est plutôt bien notée sur bower : https://github.com/FineUploader/fine-uploader