jQuery File Upload Plugin: è ansible preservare la struttura delle cartelle caricate?

Sto provando questo plugin ( https://github.com/blueimp/jQuery-File-Upload ) e interessante nel caricamento delle cartelle.

Mi chiedo se il plugin è in grado di preservare la struttura delle sottocartelle caricate (= caricamento di una cartella con 3 sottocartelle, ognuna contenente diversi file)?

Ciò dovrebbe essere ansible ai browser .dataTransfer object drag-and-drop .dataTransfer all’evento drop ; .webkitGetAsEntry() ; webkitRequestFileSystem getDirectory() per creare una directory con lo stesso nome della cartella caricata, .createReader() su DirectoryEntry , readEntries() per iterare le voci nella directory, chiamare .copyTo() per ogni FileEntry con destinazione che viene creata con nome directory caricato.

La cartella dovrebbe ora essere accessibile utilizzando webkitRequestFileSystem() , quindi chiamando .getDirectory() con nome directory come primo parametro e object opzioni vuoto {} come secondo parametro.

In alternativa, è ansible accedere alla cartella dal file system dell’utente effettivo nella cartella del profilo chrome o chromium utilizzando il file manager gui o l’interfaccia della riga di comando. Oppure, creare uno script locale per copiare le cartelle in File System in un’altra directory e rinominare le cartelle con i nomi originali delle cartelle che sono state caricate. La cartella e i percorsi dei file non sono regolati, solo i nomi delle cartelle.

è in grado di preservare la struttura delle sottocartelle caricate (= caricamento di 1 cartella con 3 sottocartelle, ognuna contenente diversi file)?

Al gestore di file la cartella non verrebbe nominata come la directory caricata, ma dovrebbe mantenere la struttura di cartelle e file. La cartella deve trovarsi nell’ultima cartella in File System nella cartella del profilo chrome, prima della cartella Origins . Vedi anche Come scrivere nel file (directory utente) usando JavaScript?

 function errorHandler(e) { console.log(e) } function handleFiles(e) { console.log("file", file) } function handleDrop(event) { var dt = event.dataTransfer; for (var i = 0; i < event.dataTransfer.items.length; i++) { var entry = dt.items[i].webkitGetAsEntry(); if (entry.isFile) { console.log("isFile", entry.isFile, entry); entry.file(handleFiles); } else if (entry.isDirectory) { console.log("isDirectory", entry.isDirectory, entry); window.webkitRequestFileSystem(window.TEMPORARY, 1024 * 1024 , function(fs) { // create directory with uploaded directory name fs.root.getDirectory(entry.name, { create: true }, function(dirEntry) { // read folders, files in uploaded directory var reader = entry.createReader(); reader.readEntries(function(entries) { entries.forEach(function(file) { // copy files to new directory file.copyTo(dirEntry); console.log("file:", file, "\ncopied to directory:", dirEntry) }) }) }, errorHandler) }, errorHandler) } } } 

plnkr http://plnkr.co/edit/oUIhwUc3CDxI64SrvxIh?p=preview