JSFiddle - React, Tailwind, and code Playground

HTML

<p>
    Select a directory to save into sandboxed filesystem (choose not too large a directory):
    <br>
    <input type="file" webkitdirectory>
</p>

<p>
Click on a filename to read its contents:
</p>

<ul></ul>

CSS

ul {
    cursor: pointer;
}

JavaScript

var fs,
    err = function(e) {
        throw e;
    };

// request the sandboxed filesystem
webkitRequestFileSystem(
    window.TEMPORARY,
    5 * 1024 * 1024,
    function(_fs) {
        fs = _fs;
    },
    err
);

// when a directory is selected
$(":file").on("change", function() {
    $("ul").empty();
    
    // the selected files
    var files = this.files;
    if(!files) return;
    
    // this function copies the file into the sandboxed filesystem
    function save(i) {
        var file = files[i];
        
        var text = file ? file.name : "Done!";
        
        // show the filename in the list
        $("<li>").text(text).appendTo("ul");
        
        if(!file) return;
        
        // create a sandboxed file
        fs.root.getFile(
            file.name,
            { create: true },
            function(fileEntry) {
                // create a writer that can put data in the file
                fileEntry.createWriter(function(writer) {
                    writer.onwriteend = function() {
                        // when done, continue to the next file
                        save(i + 1);
                    };
                    writer.onerror = err;
                    
                    // this will read the contents of the current file
                    var fr = new FileReader;
                    fr.onloadend = function() {
                        // create a blob as that's what the
                        // file writer wants
                        var builder = new WebKitBlobBuilder;
                        builder.append(fr.result);
                        writer.write(builder.getBlob());
                    };
                    fr.onerror = err;
                    fr.readAsArrayBuffer(file);
                }, err);
            }, 
            err
        );
    }
    
    save(0);
});
    
$("ul").on("click", "li:not(:last)", function() {
    // get the entry with this filename from the sandboxed filesystem
   ...