2008-10-31 17 views
15

Necesito una manera fácil de permitir a los usuarios cargar varios archivos a la vez (es decir, tengo que permitir que un usuario cargue una carpeta). No deseo poner la carga de comprimir al usuario.¿Cuál es la mejor manera de cargar una carpeta a un sitio web?

Preferiría evitar Flash o variantes si es posible. Estoy buscando una solución directa de JavaScript/HTML si es posible. Tenga en cuenta que esto excluye las respuestas en: What is the best client side browser library to upload multiple files over http?.

+0

La mejor manera: FTP –

+0

Diodeus: Deberías publicar eso como una respuesta. – eyelidlessness

Respuesta

24

No podrá hacerlo solo con HTML y Javascript. Recomiendo probar Fancy Upload, un complemento MooTools para subir varios archivos. Utiliza una mezcla de JavaScript y Flash, pero se degrada graciosamente. Funciona con todos los principales navegadores, incluido IE6, y también hay una versión compatible con Flash 10 disponible para su descarga (aunque la demostración aún no se ha actualizado).


Actualización (11/26/2012):

múltiples archivos subidos son posibles con valums o blueimp cargadores de archivo.

Para directorio recursivo cargas, la mejor solución es utilizar Chrome 11's new folder upload API. También parece funcionar en Firefox si usa un prefijo de proveedor.

+6

Upvoted para actualizar su respuesta. – Kaganar

+1

¿Por qué no es posible cargar archivos individuales y carpetas si tiene configurado el atributo webkitdirectory? Es extraño que sea una cosa u otra ... Además, ¿solo puedo subir un directorio o puedo elegir un par con el conjunto de atributos múltiples? –

+0

Esta es una pregunta antigua y la respuesta aceptada está desactualizada. Consulte mi respuesta a esta pregunta para obtener varias soluciones de trabajo https://stackoverflow.com/questions/42239663/upload-folder-and-all-its-content-in-javascript/45223463#45223463 – CaseyC

3

Si estás evitando flash (y presumiblemente de Java?) La solución JS/HTML sólo todavía requiere de un solo archivo input s, pero en esencia lo que adjuntar un evento onchange a su input, añadiendo una nueva input al DOM siempre un archivo es seleccionado

+0

¿Es posible obtener una lista de archivos dentro de una carpeta en particular, y alimentar de forma automática en el control de entrada? – torial

+0

He respondido por propia pregunta de los comentarios: http://www.codeproject.com/KB/scripting/search_in_files.aspx – torial

+0

Aunque, el problema con el enlace que encontré es que requiere ActiveX. Y en ese punto, también podría usar el flash: -/ – torial

1

Esto no es una solución pura js/html. Como lo ha señalado EndangeredMassa, no es posible. De hecho, esta idea es una solución única de IE/Windows. No lo recomiendo, pero puede funcionar. Hace

Por lo tanto, todas las renuncias a un lado ...

muchos años y varios empleadores, hemos utilizado para hacer algunas cosas lado del cliente que crea una instancia FileSystemObject. Iría iterando a través de cada uno de los archivos y los pasaría al servidor uno a la vez. No recuerdo los detalles de cómo lo hicimos: o (

De todos modos, esto significaba que la casilla del cliente debería tener que agregar el sitio a la lista de sitios confiables y otorgar a los sitios de confianza un montón de permisos que están desactivados (por muy buenas razones). Cosas como la capacidad de inicializar y guiar controles ActiveX no marcados como seguros. Ese tipo de cosas.

Sé que esta no es una respuesta perfecta, pero podría indicarle en la dirección correcta.

2

FTP? Y si NEC, envolver en un applet de Java, ActiveX o como se quiera.

De lo contrario, aunque no quieras usar el flash, SWFUpload es bastante bueno, es posible que quieras reconsiderarlo como una opción decente.

1

Here es la solución de JS puro usando la biblioteca ExtJS

+1

Esto funciona para varios archivos, pero no para carpetas. Consulte http://stackoverflow.com/a/13486123/486547 – mikermcneil

+0

¿Qué quiere decir con "cargar carpeta"? De todos modos, habría archivos, contenidos en la carpeta. – Thevs

+0

Puede usar tecnología basada en estándares para cargar múltiples archivos utilizando un cuadro de carga de archivos (es decir, http://imgur.com/Cl1RB), pero no puede elegir una carpeta (http://imgur.com/2dZtS) y tiene sus contenidos cargados recursivamente. Para hacer eso, necesitas usar el material patentado -moz/-webkit. ¡Espero que ayude! – mikermcneil

2

de múltiples archivos subidos son posibles con valums o blueimp cargadores de archivo.

Para recursivas directorio de archivos, sus opciones son más limitadas:

  • Su mejor solución es utilizar Chrome 11's new folder upload API. También parece funcionar en Firefox si usa un prefijo de proveedor.

  • Esto también es posible entre navegadores con un Java applet. Sin embargo, el% de la gente con un JRE instalado ha conseguido bastante baja en estos días (< 70%)

3

Con Firefox 42 y Edge que han aplicado la nueva directory upload proposal finalmente vamos a poder hacer archivos de directorio a través del navegador. Las API son lo suficientemente desagradables como para que desees consultar mi contenedor, uppie.

Cuestiones relacionadas