Plan HTML drag and Drop
by Pankaj Sapkal
HTML
<div id="dropbox"><span id="droplabel">Drop file here...</span>
</div>
<br/>
<img id="preview" src="" alt="[ preview will display here ]"/>
CSS
#dropbox {
width: 425px;
height: 300px;
border: 2px solid #DDD;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
background-color: #FEFFEC;
text-align: center;
color: #BBB;
font-size: 2em;
font-family: Arial, sans-serif;
}
#progressbar {
margin-left: 20px;
margin-right: 20px;
position: relative;
top: 75%;
}
#droplabel {
position: relative;
top: 40%;
}
JavaScript
$(document).ready(function() {
var dropbox = document.getElementById("dropbox")
// init event handlers
dropbox.addEventListener("dragenter", dragEnter, false);
dropbox.addEventListener("dragexit", dragExit, false);
dropbox.addEventListener("dragover", dragOver, false);
dropbox.addEventListener("drop", drop, false);
// init the widgets
$("#progressbar").progressbar();
});
function dragEnter(evt) {
evt.stopPropagation();
evt.preventDefault();
}
function dragExit(evt) {
evt.stopPropagation();
evt.preventDefault();
}
function dragOver(evt) {
evt.stopPropagation();
evt.preventDefault();
}
function drop(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files;
var count = files.length;
// Only call the handler if 1 or more files was dropped.
if (count > 0)
handleFiles(files);
}
function handleFiles(files) {
var file = files[0];
document.getElementById("droplabel").innerHTML = "Processing " + file.name;
var reader = new FileReader();
// init the reader event handlers
reader.onprogress = handleReaderProgress;
reader.onloadend = handleReaderLoadEnd;
// begin the read operation
reader.readAsDataURL(file);
}
function handleReaderProgress(evt) {
if (evt.lengthComputable) {
var loaded = (evt.loaded / evt.total);
$("#progressbar").progressbar({ value: loaded * 100 });
}
}
function handleReaderLoadEnd(evt) {
$("#progressbar").progressbar({ value: 100 });
var img = document.getElementById("preview");
img.src = evt.target.result;
}