It IS possible in Firefox 42 and upwards (https://developer.mozilla.org/en-US/Firefox/Releases/42, https://nightly.mozilla.org/):
https://jsfiddle.net/28g51fa8/3/
Using drag-and-drop events: e.dataTransfer.getFilesAndDirectories();
Or, using a new input dialog, letting the user select between files or folder upload:
<input id="dirinput" multiple="" directory="" type="file" />
<script>
var dirinput = document.getElementById("dirinput");
dirinput.addEventListener("change", function (e) {
if ('getFilesAndDirectories' in this) {
this.getFilesAndDirectories().then(function(filesAndDirs) {
for (var i=0, arrSize=filesAndDirs.length; i < arrSize; i++) {
iterateFilesAndDirs(filesAndDirs[i]);
}
});
}
}, false);
</script>
Related Bugzillas:
https://bugzilla.mozilla.org/show_bug.cgi?id=1164310 (Implement MS’s proposal for a reduced subset of the new FileSystem API)
https://bugzilla.mozilla.org/show_bug.cgi?id=1188880 (Ship directory picking and directory drag and drop)
https://bugzilla.mozilla.org/show_bug.cgi?id=1209924 (Support filtering of Directory::GetFilesAndDirectories)
https://bugzilla.mozilla.org/show_bug.cgi?id=876480#c21 (Released in Firefox 50, november 2016)
Code partially from:
https://jwatt.org/blog/2015/09/14/directory-picking-and-drag-and-drop (https://archive.is/ZBEdF)
Unfortunatelly not in MS Edge so far:
https://dev.modern.ie/platform/status/draganddropdirectories/ update: edge seems supported now.