Drag drop example
Example showing how drag drop functionality can be added
by kmturley
HTML
<div class="area">
<input type="file" id="upload" />
</div>
CSS
body {
margin: 0;
}
.area {
width: 100%;
height: 100%;
position: absolute;
border: 4px dashed #000;
background-image: url("http://kmtlondon.com/img/upload.png");
background-position: center;
background-repeat: no-repeat;
background-size: 64px 64px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
filter: alpha(opacity=50);
-khtml-opacity: 0.5;
-moz-opacity: 0.5;
opacity: 0.5;
text-align: center;
}
.area input {
width: 400%;
height: 100%;
margin-left: -300%;
border: none;
cursor: pointer;
}
.area input:focus {
outline: none;
}
.area .spinner {
display: none;
margin-top: 50%;
}
.area:hover,
.area.dragging,
.area.uploading {
filter: alpha(opacity=100);
-khtml-opacity: 1;
-moz-opacity: 1;
opacity: 1;
}
.area.uploading {
background: none;
}
JavaScript
var upload = document.getElementById('upload');
function onFile() {
var me = this,
file = upload.files[0],
name = file.name.replace(/\.[^/.]+$/, '');
if (file.type === '' ||
file.type === 'audio/mp3' ||
file.type === 'audio/mpeg' ||
file.type === 'audio/wav' ||
file.type === 'audio/x-wav' ||
file.type === 'audio/wave' ||
file.type === 'audio/x-pn-wav') {
if (file.size < (3000 * 1024)) {
upload.parentNode.className = 'area uploading';
} else {
window.alert('File size is too large, please ensure you are uploading a file of less than 3MB');
}
} else {
window.alert('File type ' + file.type + ' not supported');
}
}
upload.addEventListener('dragenter', function (e) {
upload.parentNode.className = 'area dragging';
}, false);
upload.addEventListener('dragleave', function (e) {
upload.parentNode.className = 'area';
}, false);
upload.addEventListener('dragdrop', function (e) {
onFile();
}, false);
upload.addEventListener('change', function (e) {
onFile();
}, false);