Estoy trabajando en una aplicación web. Hay un lugar donde el usuario puede subir archivos con el protocolo HTTP. Hay que elegir entre el clásico HTML archivo de control de carga y un applet de Java para cargar los archivos.

El clásico HTML de carga de archivo no es muy grande, ya que sólo puede seleccionar un archivo a la vez, y es muy difícil conseguir cualquier indicación de progreso durante la carga real (por fin lo conseguí usando un temporizador de actualización de un indicador de progreso con datos obtenidos desde el servidor a través de una llamada AJAX). La ventaja: siempre trabajando.

Con el applet de Java que puedo hacer más cosas: seleccionar varios archivos a la vez (incluso una carpeta), comprimir los archivos, obtener una verdadera barra de progreso, y arrastrar y soltar los archivos en el applet, etc…

PERO hay un par de inconvenientes:

  • es una pesadilla para conseguir que funcione correctamente en Safari de Mac y Mac Firefox (Gracias Liveconnect)
  • la interfaz de usuario no es exactamente la interfaz de usuario nativa y algunas personas notan que
  • el applet no es tan sensible como debería (podría ser mi culpa, pero todo parece bien a mí)
  • hay errores en la de Java UrlConnection clase con HTTPS, por lo que utilizar el Apache HTTP comunes cliente para hacer el real HTTP cargar. Es bastante grande un paquete y se ralentiza la descarga de la .archivo jar
  • el Apache HTTP comunes cliente tiene a veces problemas para ir a través de proxy
  • el tiempo de ejecución de Java es bastante grande

He sido el mantenimiento de este applet de Java por un tiempo, pero ahora estoy harto de todos los inconvenientes, y teniendo en cuenta la escritura/comprar un completamente nuevo componente para subir estos archivos.

Pregunta

Si usted tuvo los siguientes requisitos:

  • cargar varios archivos fácilmente desde un navegador, a través de HTTP o HTTPS
  • comprimir los archivos para reducir el tiempo de carga
  • carga de trabajo en cualquier plataforma, con interfaz de usuario nativa
  • debe ser capaz de cargar archivos de gran tamaño, de hasta 2 gb por lo menos
  • tiene carta blanca en la tecnología

De lo que la tecnología/compontent usarías?


Edición :

  • Drag’n’Drop de archivos en el componente sería un gran plus.
  • Parece que hay un montón de cuestiones relacionadas con los errores con el Flash Player (swfupload problemas conocidos). Mac correcta de apoyo y de carga a través de proxy con autenticación son opciones que no se puede hacer sin. Esto sería, probablemente, descartar todos los Flash-basado opciones 🙁 .
  • Me descartar todas HTML/Javascript-opciones sólo porque usted no puede seleccionar más de un archivo a la vez con el clásico control de HTML. Es un dolor que haga clic en n-veces el botón «examinar» cuando se desea seleccionar varios archivos en una carpeta.
  • ¿Qué acerca de la reanudación de las cargas? Que parece realmente importante para mí. A nadie le gusta que se reinicia la carga que falló después de un par de horas.
  • Cierto, en ese caso no creo que usted todavía puede utilizar Flash, solo Java y Silverlight ?)
  • Hola otro basado en Flash Uploader se encuentra en digitarald.de/project/fancyupload

10 Comentarios

  1. 5

    He implementado algo muy recientemente en Silverlight.

    Básicamente utiliza HttpWebRequest para enviar un paquete de datos a un GenericHandler.

    En el primer post, 4KB de datos es enviado. En la 2ª porción, me envía otro 4K fragmento.

    Cuando la 2ª porción es recibido, tengo que calcular la ida y la vuelta se tomó entre la primera y la 2ª parte y por lo que ahora
    la 3ª porción cuando se envía se sabe para aumentar la velocidad.

    El uso de este método que puede subir archivos de CUALQUIER tamaño y no se puede reanudar.

    Cada post que envie a lo largo de esta información:

    [PARÁMETROS]
    [FILEDATA]

    Aquí, los parámetros de contener lo siguiente:
    [Fragmento #]
    [Nombre de archivo]
    [IDENTIFICADOR de sesión]

    Después de cada fragmento es recibido, voy a enviar una copia de la respuesta a mi Silverlight diciendo qué tan rápido se tomó de manera que ahora se pueden enviar a un mayor
    chunk.

    Duro para poner mi explicación sin código, sino que se trata básicamente de cómo lo hice yo.

    En algún momento voy a poner juntos una rápida valoración crítica sobre cómo hice esto.

    • Suena cool, quiero tratar de hacerlo así. Me encanta que por fin podemos manipular archivos en el lado del cliente usando el código administrado! Larga Vida A Silverlight!
    • Se ejecuta en los problemas dentro de la siverlight jugador respecto de cookies del navegador managemen, proxies, el soporte de la plataforma ?
    • Silverlight se ejecuta en el lado del cliente y mi carga controlador es el lado del servidor. Ya que ambos son desprendidas de la sesión, me gustaría pasar el IDENTIFICADOR de sesión de silverlight en el inicio. Si bien la carga de la sesión, a continuación, se pasa de silverlight para el controlador, por lo que mantiene todo dentro de una sesión
  2. 5

    Nunca la he utilizado con archivos de hasta 2GB de tamaño, pero el YUI File Uploader funcionado bastante bien en un proyecto anterior. Usted también podría estar interesado en este Plugin jQuery.

    Que dijo, todavía creo que el Applet de Java es el camino a seguir. Creo que voy a acabar con menos de la portabilidad y de la interfaz de usuario de las cuestiones que usted espera y Arrastrar/Soltar las grandes obras. Para el registro, Box.net utiliza un Applet de Java para sus varios archivos de forma rápida carga.

    • Box.net utiliza un componente de flash como primera opción para sus cargas. Ese componente, a continuación, se proporciona un vínculo a un applet de java para los usuarios que desean utilizar «arrastrar y soltar»
  3. 4

    OK esta es mi opinión sobre este

    Hice algunas pruebas con swfupload, y tengo mi anterior experiencia con Java, y mi conclusión es que lo que se usa la tecnología no es la solución perfecta para hacer carga en el navegador : siempre vas a terminar con errores al cargar archivos de gran tamaño, pasando a través de proxy, con ssl, etc…

    PERO :

    • un flash uploader (a la swfupload) es realmente ligero, no necesita la autorización del usuario y tiene una interfaz nativa que es REALMENTE genial, me cree
    • java uploader autorización de necesidades, pero usted puede hacer lo que quiera con los archivos seleccionados por el usuario (también conocido como compresión, si es necesario), y arrastrar y soltar funciona bien. Estar preparado para algo de épica errores debuggin’ aunque.
    • Yo no conseguir un cambio para jugar con Silverlight como me gustaría tal vez esa es la respuesta real, aunque la tecnología aún es muy joven así que … voy a editar este post si me dan la oportunidad de trastear un poco con Silverlight

    Gracias por todas las respuestas !!

    • Una nota para la gente de encontrar esta respuesta un par de años. Hemos utilizado SWFUpload durante años y, en general, funciona muy bien. Una cosa a tener en cuenta es que debido a que Flash Player 9 no envía la Autorización de cabeceras, así que no funcionará si utiliza la Autenticación Integrada de Windows o un servidor proxy que requiere autenticación. Por esta razón nos hemos trasladado a una basada en HTML5 solución.
  4. 3

    Hay una serie de flash gratis los componentes que existen, con un bonito cargar múltiples archivos de capacidad. Ellos hacen uso de ActionScripts clase FileReference con un PHP (o lo que sea) del receptor en el lado del servidor. Algunos han roto recientemente con el lanzamiento de FP10 pero sé a ciencia cierta que swfupload funcionará 🙂

    Espero que esto ayude!

  5. 2

    Lo que acerca de estos dos
    Jupload
    http://jupload.sourceforge.net/
    y
    jumploader
    http://jumploader.com/

    Ambos son los applets de java, pero que son también muy fácil de usar y de implementar.

    • Sí, he oído hablar de JUpload ya, nunca tuvo una oportunidad/tiempo para prueba de tensión un poco. Sé que subir a través de https es el problema, en general, el problema radica en el JDK de la aplicación en sí misma. Si JUpload usa el valor predeterminado de la aplicación probablemente sufre el problema).
    • Acerca de Jumploader : interfaz de usuario parece muy bonito, parece apoyar HTTPs. Vale la pena un vistazo en mi opinión 🙂
  6. 1

    lo que acerca de google gears?

    • Buena idea, pero lo que es un poco aterrador es que no es un apoyo en Mac OS X Snow Leopard, Snow Leopard ha sido de 2 meses !! Voy a tratar de que en Firefox asap por curiosidad 😉 Gracias !
  7. 0

    Hay HTTP/HTTPS cargar los controles que permiten múltiples de carga de archivos. Aquí es uno de Telerik, que he encontrado para ser sólido y fiable. La última versión parece tener la mayoría, si no todos sus requisitos de la característica.

    • a diferencia de otros AJAX subidores, este es atado .NETA, lo que es inútil
    • También, usted no puede seleccionar más de un archivo a la vez. Tal vez usted quería hablar de la telerik silverlight de control de carga
  8. 0

    Puede cargar varios archivos con HTTP formas, como Dave ya se ha señalado, pero si estás en el uso de algo más allá de lo que HTTP y Javascript ofrece quisiera fuertemente considerar Flash. Incluso hay algunos pre-existente de soluciones para ello como MultiPowUpload, y ofrece muchas de las características que usted está buscando. Además, es más fácil obtener la información de progreso usando un cliente Flash que con las llamadas AJAX de Javascript ya que usted tiene un poco más de flexibilidad.

  9. 0

    Usted puede comprobar el Apache Commons FileUpload paquete. Se le permite cargar varios archivos, controlar el progreso de la carga, y más. Usted puede encontrar más información aquí:

    http://commons.apache.org/fileupload/

    http://commons.apache.org/fileupload/using.html

    Buena suerte

    • Apache Commons Fileupload es un java del lado del servidor de la biblioteca que se utilizan para analizar la carga de archivos http post. Ya tengo la parte de trabajo. Estoy muy enfocado en la parte del cliente.
  10. 0

    Forma más sencilla de carga de archivos en java es GOJFileUpload.jar biblioteca

    Aquí es el gojfileupload biblioteca tutorial:

    GOJFileUpload

    Dan dos método

    • UploadFile(String filepath,ArrayList imagenames,HttpRequest petición)
    • UploadFile(String filepath,ArrayList dataname,ArrayList
      imagenames,HttpRequest petición)

    Volveré usted HashMap el todo el nombre del archivo que has subido, después de subir el archivo en su carpeta de destino.

Dejar respuesta

Please enter your comment!
Please enter your name here