HTML5 Drag & Drop

by ramyaaviji

HTML

<div id="droparea">DROP FILE HERE</div>
<div id="filename"></div>
<textarea id="result"></textarea>

CSS

#droparea {
    background: #ccc;
    line-height: 200px;
    text-align: center;
    display: block;
    height: 200px;
    width: 400px;
}
#result {
    width: 400px;
    height: 400px;
}
#filename {
    background: #eaeaea;
    margin: 4px 0;
    width: 400px;
    height: 40px;
}

JavaScript

var MAX_BYTES = 102400; // 100 KB

function dragEnter(event) {
    
    console.log('dragEnter', event);
    
    event.stopPropagation();
    event.preventDefault();
    
}

function dragExit(event) {
    
    console.log('dragExit', event);
    
    event.stopPropagation();
    event.preventDefault();
    
}

function dragOver(event) {
    
    console.log('dragOver', event);
    
    event.stopPropagation();
    event.preventDefault();
    
}

function drop(event) {
    
    console.log('drop', event);
    
    event.stopPropagation();
    event.preventDefault();
    
    var data = event.dataTransfer;
    var files = data.files;
    var file;
    var reader;
    
    for(var i = 0; i < files.length; i++) {
        
        file = files[i];
        console.log(file, file.name);
        document.getElementById('filename').innerHTML = 'BINARY: ' + file.name;
        reader = new FileReader();
        reader.onloadend = onFileLoaded;
        //reader.readAsBinaryString(file);
        reader.readAsDataURL(file);
        
    }
    
}

function onFileLoaded(event) {
    
    console.log('onFileLoaded', event);
    
    var initialData = event.currentTarget.result.substr(0, MAX_BYTES);
    document.getElementById('result').innerHTML = initialData;
    
}

var dropArea = document.getElementById('droparea');

dropArea.addEventListener("dragenter", dragEnter, false);
dropArea.addEventListener("dragexit", dragExit, false);
dropArea.addEventListener("dragover", dragOver, false);
dropArea.addEventListener("drop", drop, false);