/* Drag'n drop stuff */ var drag = document.getElementById("drag"); drag.ondragover = function(e) {e.preventDefault()} drag.ondrop = function(e) { e.preventDefault(); var length = e.dataTransfer.items.length; for (var i = 0; i < length; i++) { var entry = e.dataTransfer.items[i].webkitGetAsEntry(); var file = e.dataTransfer.files[i]; var zip = file.name.match(/\.zip/); if (entry.isFile) { if(zip){ unzip(file); } else { var file = e.dataTransfer.files[i]; if(file.type.match(/image.*/)){ upload(file); } else { document.getElementById("error").innerHTML = file.name+" is not an image."; } } } else if (entry.isDirectory) { traverseFileTree(entry); } } } //model for zip.js var model = (function() { return { getEntries : function(file, onend) { zip.createReader(new zip.BlobReader(file), function(zipReader) { zipReader.getEntries(onend); }, onerror); }, getEntryFile : function(entry, creationMethod, onend, onprogress) { var writer, zipFileEntry; function getData() { entry.getData(writer, function(blob) { //read the blob, grab the base64 data, send to upload function oFReader = new FileReader() oFReader.onloadend = function(e) { upload(this.result.split(',')[1]); }; oFReader.readAsDataURL(blob); }, onprogress); } writer = new zip.BlobWriter(); getData(); } }; })(); /* Traverse through files and directories */ function traverseFileTree(item, path) { path = path || ""; if (item.isFile) { // Get file item.file(function(file) { if(file.type.match(/image.*/)){ upload(file); } }); } else if (item.isDirectory) { // Get folder contents var dirReader = item.createReader(); dirReader.readEntries(function(entries) { for (var i=0; i