With the dropzone attribute you can skip all of that. Colors dropzone red on drag if files will be rejected because of file type. Using files from web applications. Post that binary data to the server. Basically Dropzone just does all the heavy lifting for you, and exposes a very high level API that you can use to build your user interface. The main feature of Dropzone is its events that you can listen to, so you can react to every change. This is the HTML that is used as template for every file dropped: