2009-11-03 17 views
22

Deseo recibir recomendaciones para subir scripts/componentes. Mis criterios:¿El mejor componente de carga sin flash para aplicaciones web?

  • Sin flash
  • Llanura Javascript bien, jQuery bien
  • Debe proporcionar barra de progreso (actualizado a partir, por ejemplo, llamada AJAX).

Probablemente no sea relevante, pero utilizo ASP.NET MVC en el lado del servidor.

Gracias

ACTUALIZACIÓN Sí, ya sé que tendrá que ser un componente del lado del servidor para esto, pero que pueden proporcionar. Estoy más interesado en los scripts del lado del cliente. (Quizás algunas soluciones estarán ligadas a las implementaciones del lado del servidor, aunque no lo sé)

Solo para aclarar: no tiene que ser específico para .net. Me complace utilizar un componente que solo viene con (por ejemplo) scripts del lado del servidor de PHP, y hacer mi propio para .net.


Gracias por todas las respuestas - hay información muy útil allí. Al final acepté el 'cargador AJAX' - No cumplía con el requisito de la barra de progreso, pero parece que nada podría (al menos sin flash). Creo que también consideraré la posibilidad de crear la mía, basada en parte de la información aquí, y la publicaré si tengo algo de suerte.

Respuesta

13

Fine Uploader Usamos esto y es bastante bueno, vale la pena intentarlo de todos modos.

Editar: Por alguna razón, pensé que usamos Uploadify, resulta que fue esto.

+2

que está basado flash –

+0

He corregido mi publicación, espero que esto ayude – TWith2Sugars

+2

No he visto eso, gracias. Aunque no parece proporcionar ninguna encuesta de progreso. – UpTheCreek

5

La tecnología del lado del servidor es muy relevante para lo que estás tratando de hacer. La interacción del servidor es necesaria para ese tipo de cosas.

No conozco ningún componente ya hecho, pero este article podría ser útil.

Según su actualización, parece que está buscando un componente de cliente vinculado a una tecnología de servidor específica y tiene la confianza de que puede convertirlo fácilmente a .NET. En mi opinión, esto no será fácil. Para implementar la barra de progreso, necesita un oyente de carga de archivos. En Java, tuve suerte haciendo algo similar usando Apache Commons FileUpload y al implementar la interfaz ProgressListener. Básicamente, he seguido las instrucciones en este article. Además del oyente de progreso, necesitaba implementar un servlet que devolviera el porcentaje actual de la carga y en el lado del cliente usar un complemento jQuery de la barra de progreso, que regularmente actualizaba Ajax llamando al servlet porcentual. Estos son los bits fáciles. Como he comentado, puede implementarlos fácilmente usted mismo en muy poco tiempo.

La parte difícil es la escucha progresiva y esto es muy diferente, dependiendo de la tecnología del servidor. Así que te recomiendo que comiences desde allí. Descubra cómo puede escuchar el progreso de un archivo cargado con ASP.Net MVC. El artículo vinculado anteriormente es un buen punto de partida.

+0

Sí, por supuesto, me doy cuenta de que tendrá que haber una integración del lado del servidor. Estoy interesado en encontrar elementos del lado del cliente creados previamente: al script no le importa lo que generó una respuesta JSON. – UpTheCreek

+0

Luego, comience por encontrar un complemento de barra de progreso apropiado. Necesitará menos de 10 líneas de código jQuery para actualizar desde una respuesta JSON.Incluso si encuentra un complemento listo, el código de configuración necesario para que se adapte a sus necesidades sería tanto como grande. – kgiannakakis

+0

Bueno, sí sé que podría hacerlo todo yo solo, pero quería ver si había algo listo. De ahí esta pregunta. – UpTheCreek

1

Los componentes de carga de flash en la mayoría de las implementaciones de JavaScript están ahí porque proporcionan una mayor cantidad de información sobre el archivo y su carga. que le permite proporcionar continuamente un marco de eventos para las barras de progreso.el más popular es, por supuesto, http://swfupload.org/

Flash tiene acceso a la información del archivo antes de que la carga realmente comience. utilizando una solución de JavaScript pura, solo tiene acceso a la longitud de la secuencia de archivos en el servidor hasta que todo el archivo se haya recibido por completo y guardado en el disco duro del servidor.

La siguiente secuencia de comandos ASP clásica muy antigua proporciona un archivo que su javascript podría sondear y que contendría únicamente el porcentaje de la carga completa recibida en el servidor hasta el momento.

http://www.freeaspupload.net/

no es elegante simplemente lo hace un buen trabajo de lo que hace. No he visto una versión .net más moderna todavía.

+0

Solo para aclarar: no tiene que ser específico de .net. Me complace utilizar un componente que solo viene con (por ejemplo) scripts del lado del servidor de PHP, y hacer mi propio para .net. – UpTheCreek

+0

Nosotros también usamos swfupload. No he visto un medio de doignar barras de progreso sin Flash/Java, pero me complacerá aprender otheriwse :); Soy escéptico de que el servidor realmente reaccione hasta que todo el archivo esté POST'd, por lo tanto, no puede informar el% de edad recibido durante la carga, mientras que creo que Flash hace la barra de progreso relacionada con el% de edad enviado. en lugar de RECIBIDO). El bit del lado del servidor de deconstruir el mimo multi = parte es bastante doloroso también IME (omisión con conversión Byte/Unicode) – Kristen

+0

un resumen básico de cómo hacer esto sin flash requiere un poco más de comunicación del cliente durante la carga. El servidor procesa los datos de carga en fragmentos a medida que se transmiten, después de cada fragmento escribe todo lo que sabe sobre los datos cargados en un archivo especificado por la cadena de consulta del cliente. A su vez, mientras el cliente envía el archivo publicado al servidor, puede sondear repetidamente el archivo de información hasta que indique que el servidor ha recibido todo. Usando la longitud del flujo y la longitud procesada, podemos calcular un porcentaje para una barra de progreso de CSS o JavaScript. –

0

Pruebe AsyncFileUpload para aplicaciones web asp.net.

+0

No he usado la biblioteca ASP.NET Ajax antes. Desafortunadamente, la demostración en el sitio no parece estar funcionando. Sin embargo, mirando el resumen, no parece que admita encuestas. – UpTheCreek

5

Hemos jugado un poco con esto algunos para un proyecto interno, y no creo que los criterios de una pantalla de progreso sin Flash se pueden cumplir. La razón por la que los cargadores basados ​​en Flash son tan populares es que JavaScript es increíblemente restringido en los navegadores web del cliente: por razones de seguridad, JavaScript no puede acceder a ningún archivo en el disco duro del cliente (por lo tanto, del archivo en sí mismo para cargar), es muy restringido en cuánto puede manipular los controles <input type='file'> (ya que de lo contrario podría seleccionar y cargar archivos sin que el usuario lo sepa), y solo puede cargar el archivo como un POST de todo o nada envío de formulario ed (por lo tanto, no hay informes de progreso).

Incluso si pudiera resolver estos problemas del lado del cliente, hasta donde yo sé, cualquier servidor web genérico esperará hasta que se reciba todo el archivo POST 'cargado antes de pasarlo a la web del lado del servidor aplicación, por lo que no hay oportunidad para que un componente del lado del servidor actualice el estado a medida que recibe cada fragmento.

Parece que algo así como AJAX Upload es lo mejor que puede hacer.

+0

Gracias por compartir sus experiencias. – UpTheCreek

0

No creo que haya un componente que coincida con sus requisitos, porque hasta donde yo sé, cada solución que proporciona una barra de progreso está basada en flash. ;)

Pero, al igual que TWith2Sugars he usado AjaxUpload, y funciona maravillosamente, pero no hay barra de progreso.

+0

Hay componentes del lado del servidor disponibles, que el operador reconoce serán necesarios. Tiene razón en que no hay otra opción de cliente disponible además de flash, silverlight o un complemento de navegador similar. –

Cuestiones relacionadas