2010-07-26 10 views
13

Estoy impresionado por la capacidad de Gmail de permitirle arrastrar archivos a los correos electrónicos para archivos adjuntos, pero cuando intento arrastrar una carpeta hacia ella, dice que el archivo tiene 0 bytes. ¿Es esto una limitación de Gmail o es algo que no se puede hacer con las especificaciones HTML 5 actuales?¿Puede HTML 5 arrastrar y soltar carpetas de control?

+0

Realmente puede arrastrar carpetas, pero no puede leer ningún dato de los archivos contenidos. En Safari obtendrás datos del portapapeles con texto tipo/uri-list que puedes usar para descubrir cuál es la ruta de la carpeta, pero eso es todo. –

Respuesta

17

Ahora directorio de carga disponible en cromo

puede seleccionar el directorio con el ingreso de tipo

<input type='file' webkitdirectory > 

y puede arrastrar soltar una carpeta

<div id="dropzone"></div> 

var dropzone = document.getElementById('dropzone'); 
dropzone.ondrop = function(e) { 
    var length = e.dataTransfer.items.length; 
    for (var i = 0; i < length; i++) { 
    var entry = e.dataTransfer.items[i].webkitGetAsEntry(); 
    if (entry.isFile) { 
     ... // do whatever you want 
    } else if (entry.isDirectory) { 
     ... // do whatever you want 
    } 
    } 
}; 
+0

¿Es posible usar 'webkitRelativePath'? http://www.htmlfivewow.com/slide18 – est

+0

la identificación para el div tiene algunas citas rizadas extrañas. Me preguntaba por qué no funcionaba cuando lo pegué en mi editor. –

3

La actual draft of html5 solo admite un objeto de lista de archivos para manejar los eventos getData. por lo que puede arrastrar varios archivos a un destino de arrastre, pero no hay carpetas

+2

¿No sería sencillo implementar una "lista de archivos" que son los archivos recursados ​​de una carpeta? (Me refiero directo a los proveedores de navegadores, entiendo que esto no es implementable por javascript actualmente) –