En créant un input "file" c'est simple mais la je ne peux pas utiliser d'input car j'ai un certain design a appliquer sur la div qui serai impossible sur un input.
Je ne vois pas bien ou est le problème ... tu peux créer un input file, et jouer sur les pseudo selecteur :after (par exemple) pour le styliser.
Pour ce qui est de l'upload, tu dois utiliser Ajax, cependant je te conseil d'utiliser un plugin tout fait , comme DropZone .
Ton code sera tout simple alors :