JSFiddle - React, Tailwind, and code Playground

by dshilkret

HTML

<div id="dropFiles" class="dropFiles">
  Drag and drop File Here.
</div>

<div id="messages">
</div>


<br />

CSS

.dropFiles {
  width: 100%;
  min-height: 100px; 
  height: 100px; 
  border: 5px black dashed; 
  text-align: center;
  font-size: 25px;
}

.highlightDropArea {
  border: 5px red dashed;
}

JavaScript

$(document).ready(function(){
  $("#dropFiles").on('dragenter', function(ev) {
      // Entering drop area. Highlight area
      $("#dropFiles").addClass("highlightDropArea");
  });
  
  $("#dropFiles").on('dragleave', function(ev) {
    // Going out of drop area. Remove Highlight
    $("#dropFiles").removeClass("highlightDropArea");
  });
  
  $("#dropFiles").on('drop', function(ev) {
    // Dropping files
    ev.preventDefault();
    ev.stopPropagation();
    // Clear previous messages
    $("#messages").empty();
    if(ev.originalEvent.dataTransfer){
      if(ev.originalEvent.dataTransfer.files.length) {
        var droppedFiles = ev.originalEvent.dataTransfer.files;
        for(var i = 0; i < droppedFiles.length; i++)
        {
          console.log(droppedFiles[i]);
          $("#messages").append("<br /> <b>Dropped File </b>"+ droppedFiles[i].name);
          // Upload droppedFiles[i] to server
          uploadIt(droppedFiles[i]);
          
        }
      }
    }

    $("#dropFiles").removeClass("highlightDropArea");
    return false;
  });
  
  $("#dropFiles").on('dragover', function(ev) {
      ev.preventDefault();
  });
})

function uploadIt(f){
	 $.ajax({
            url: '...',
            data: f,
            processData: false,
            contentType: false,
            type: 'POST',
            success: function(data){
                console.log(data);
              alert('The file has been uploaded');
            },
            error: function(xhr) {
                console.log(xhr);
                alert('An error happended:' + JSON.stringify(xhr));
            },
            complete: function() {
              //alert('Complete');
            }
        });
}