Complemento de carga de archivos jQuery: ¿Es posible preservar la estructura de las carpetas cargadas?
file upload (1)
Esto debería ser posible en los navegadores
webkit
utilizando el objeto
.dataTransfer
arrastrar y soltar en el evento de
drop
;
.webkitGetAsEntry()
;
webkitRequestFileSystem
getDirectory()
para crear un directorio que tenga el mismo nombre que la carpeta cargada,
.createReader()
en
DirectoryEntry
,
readEntries()
para iterar entradas en el directorio, llame a
.copyTo()
para cada
FileEntry
con el destino que se está creando el directorio con el nombre del directorio cargado.
La carpeta ahora debería ser accesible usando
webkitRequestFileSystem()
, luego llamando a
.getDirectory()
con el nombre del directorio como primer parámetro y el objeto de opciones vacías
{}
como segundo parámetro.
Alternativamente, puede acceder a la carpeta desde el sistema de archivos del usuario real en la carpeta de perfil de cromo o cromo utilizando la interfaz gráfica de usuario del administrador de archivos o la interfaz de línea de comandos.
O cree una secuencia de comandos local para copiar carpetas en el
File System
a otro directorio y cambie el nombre de las carpetas a los nombres originales de las carpetas que se cargaron.
Las rutas de carpeta y archivo no están ajustadas, solo los nombres de carpeta.
es capaz de preservar la estructura de las subcarpetas cargadas (= cargar 1 carpeta con 3 subcarpetas, cada una con varios archivos)?
En el administrador de archivos, la carpeta no se llamaría igual que el directorio cargado, aunque debería retener la estructura de carpetas y archivos.
La carpeta debe ubicarse en la última carpeta del
File System
en la carpeta de perfil de Chrome, antes de la carpeta
Origins
.
Consulte también
¿Cómo escribir en un archivo (directorio de usuarios) 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)
}
}
}
Estoy probando este complemento ( https://github.com/blueimp/jQuery-File-Upload ) e interesante en la carga de carpetas.
Me pregunto si el complemento puede preservar la estructura de las subcarpetas cargadas (= cargar 1 carpeta con 3 subcarpetas, cada una con varios archivos).