Use dropzone.js

god I hate html5's drag and drop api. literally the worst in existence.