Тебе нужен <input type="file">
в первую очередь, а потому уже либо с помощью canvas или svg отрисовывать свою картинку в нужном месте.
Еще можно в base64 картинку переводить и тоже отображать.
Ну или готовое решение: https://www.html5rocks.com/en/tutorials/file/dndfi...
Нужно понимать: пока ты пишешь код, он превращается в гавно, потому что где-то какие-то чуваки придумали новые решения, приемы, библиотеки и плагины.
Поэтому не парься!