silver para oficial microsoft life descarga actualizar java flash silverlight http upload

java - para - silverlight 2018



La mejor manera de cargar múltiples archivos desde un navegador (10)

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

La carga clásica de archivos HTML no es buena porque solo puedes seleccionar un archivo a la vez, y es bastante difícil obtener cualquier indicación de progreso durante la carga real (finalmente lo obtuve usando un temporizador refrescando un indicador de progreso con datos obtenidos del servidor a través de una llamada AJAX). La ventaja: siempre está funcionando.

Con el applet de Java puedo hacer más cosas: seleccionar varios archivos a la vez (incluso una carpeta), comprimir los archivos, obtener una barra de progreso real, arrastrar y soltar archivos en el applet, etc.
PERO hay algunos inconvenientes:

  • es una pesadilla hacer que funcione correctamente en Mac Safari y Mac Firefox (Thanks Liveconnect)
  • la interfaz de usuario no es exactamente la interfaz de usuario nativa y algunas personas notan que
  • el applet no responde tan bien como debería (podría ser mi culpa, pero todo me parece bien)
  • Hay errores en la clase Java UrlConnection con HTTPS, por lo que utilizo el cliente HTTP común de Apache para realizar la carga HTTP real. Es un paquete bastante grande y ralentiza la descarga del archivo .jar
  • el cliente HTTP común de Apache a veces tiene dificultades para realizar proxies
  • el tiempo de ejecución de Java es bastante grande

He estado manteniendo este applet de Java por un tiempo, pero ahora estoy harto de todos los inconvenientes, y considerando escribir / comprar un componente completamente nuevo para cargar estos archivos.

Pregunta

Si tuviera los siguientes requisitos:

  • cargar múltiples archivos fácilmente desde un navegador, a través de HTTP o HTTPS
  • comprimir los archivos para reducir el tiempo de carga
  • la carga debería funcionar en cualquier plataforma, con UI nativa
  • debe poder cargar archivos enormes, hasta 2 gb como mínimo
  • tienes carta blanca sobre la tecnología

¿Qué tecnología / componente usarías?

Editar:

  • Drag''n''Drop de archivos en el componente sería una gran ventaja.
  • Parece que hay muchos problemas relacionados con errores en Flash Player ( problemas conocidos de swfupload ). La compatibilidad adecuada con Mac y la carga a través de proxies con autenticación son opciones de las que no puedo prescindir. Esto probablemente descartaría todas las opciones basadas en Flash :-(.
  • Elimino todas las opciones de HTML / Javascript solamente porque no puede seleccionar más de un archivo a la vez con el control HTML clásico. Es un dolor hacer clic n veces en el botón "examinar" cuando desee seleccionar varios archivos en una carpeta.



Hay controles de carga HTTP / HTTPS que permiten subir archivos múltiples. Here hay uno de Telerik, que he encontrado sólido y confiable. La última versión parece tener la mayoría, si no todos, sus requisitos de funciones.


Hay una cantidad de componentes flash gratuitos que existen con una buena capacidad de carga de archivos múltiples. Hacen uso de la clase ActionScripts FileReference con un receptor PHP (o lo que sea) en el servidor. Algunos han roto recientemente con el lanzamiento del FP10, pero sé con certeza que swfupload funcionará :)

¡Espero que esto ayude!


Implementé algo muy recientemente en Silverlight.

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

En la primera publicación, se envían 4 KB de datos. En el segundo fragmento, envío otro fragmento de 4K.

Cuando se recibe el segundo trozo, calculo el viaje de ida y vuelta entre el primero y el segundo trozo, por lo que ahora el tercer trozo, una vez enviado, sabrá aumentar la velocidad.

Usando este método puedo subir archivos de CUALQUIER tamaño y puedo reanudar.

Cada publicación que envío a lo largo de esta información:

[PARÁMETROS] [FILEDATA]

Aquí, los parámetros contienen lo siguiente: [Número de fragmento] [Nombre de archivo] [ID de sesión]

Después de recibir cada trozo, le envío una respuesta a mi Silverlight que dice lo rápido que tardó para poder enviar un trozo más grande.

Es difícil poner mi explicación sin código, pero eso es básicamente cómo lo hice.

En algún momento, prepararé un informe rápido sobre cómo lo hice.


La forma más fácil de cargar archivos en Java es la biblioteca GOJFileUpload.jar

Aquí está el tutorial de la biblioteca gojfileupload:

GOJFileUpload

Ellos dan dos métodos

  • UploadFile (String filepath, ArrayList imagenames, HttpRequest request)
  • UploadFile (String filepath, ArrayList dataname, ArrayList imagenames, HttpRequest request)

Le devolverán HashMap el nombre de todo el archivo que cargó después de cargarlo en su carpeta de destino.


Nunca lo he usado con archivos de 2 GB de tamaño, pero el Cargador de archivos YUI funcionó bastante bien en un proyecto anterior. Puede que también le interese este plugin de jQuery .

Dicho esto, sigo pensando que el Applet de Java es el camino a seguir. Creo que terminarás con menos problemas de portabilidad y UI de los que esperabas y Drag / Drop funciona muy bien. Para el registro, Box.net utiliza un Applet de Java para sus cargas rápidas de múltiples archivos.



También puede cargar múltiples archivos con formularios HTTP, como Dave ya señaló, pero si está dispuesto a usar algo más allá de lo que ofrece HTTP y Javascript, consideraría mucho Flash. Incluso existen algunas soluciones preexistentes como MultiPowUpload y ofrece muchas de las funciones que está buscando. También es más fácil obtener información de progreso utilizando un cliente Flash que con llamadas AJAX de Javascript, ya que tiene un poco más de flexibilidad.


OK esta es mi opinión sobre esto

Hice algunas pruebas con swfupload, y tengo mi experiencia previa con Java, y mi conclusión es que sea cual sea ​​la tecnología que se utilice, no hay una solución perfecta para hacer cargas en el navegador : siempre terminarás con errores al cargar archivos de gran tamaño. pasando por proxies, con ssl, etc.

PERO :

  • un cargador de flash (a la swfupload) es muy liviano, no necesita autorización del usuario y tiene una interfaz nativa que es realmente genial, me dice
  • un cargador de Java necesita autorización, pero 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. Sin embargo, prepárate para algunos errores épicos.
  • No tuve un cambio para jugar con Silverlight, siempre y cuando me gustaría que esa sea la verdadera respuesta, aunque la tecnología todavía es bastante joven, así que ... editaré esta publicación si tengo la oportunidad de jugar un poco. con Silverlight

Gracias por todas las respuestas !!