2009-05-18 18 views
5

Estoy en la fase de diseño de un servicio de carga de archivos que permite a los usuarios cargar archivos zip muy grandes en nuestro servidor y actualiza nuestra base de datos con los datos. Dado que los archivos son grandes (aproximadamente 300 mb), queremos permitir que el usuario limite la cantidad de ancho de banda que quiere usar para cargar. También deberían poder pausar y reanudar la transferencia, y debería recuperarse de un reinicio del sistema. El usuario también necesita ser autenticado en nuestra base de datos MSSQL para garantizar que tienen permiso para cargar el archivo y realizar cambios en nuestra base de datos.Carga de archivos reanudables

Mi pregunta es, ¿cuál es la mejor tecnología para hacer esto? Nos gustaría minimizar la cantidad de desarrollo requerido, pero lo único que se me ocurre ahora que nos permitiría hacer esto sería crear una aplicación cliente y servidor desde cero en algo como python, java o C#. ¿Existe una tecnología existente disponible que nos permita hacer esto?

Respuesta

4

Hay bastantes controles de carga para esto que debería poder Google. Hay algunos en este download page.

Otra alternativa es que sus clientes instalen un complemento de Firefox FTP o escriban un complemento de Firefox, pero FTP es, de lejos, la forma más fácil de arrancar.

+2

Este comentario me llevó a encontrar el módulo pyftpdlib que parece permitirnos extender un servidor ftp para hacer todo tipo de cosas. http://code.google.com/p/pyftpdlib/ –

4

¿Qué pasa con FTP? El protocolo admite reutilización y hay muchos y muchos clientes.

+0

Una vez que los datos se cargan en el servidor necesitaríamos ejecutar un script de alguna forma que agregue una fila en una tabla DB, ¿puede ftp ejecutar comandos de shell en el servidor? –

+5

Si necesita ejecutar algo después de la carga, puede implementar el servidor ftp como parte de su aplicación en el idioma que desee. Python tiene ftplib. Alternativamente, podría ver el directorio de carga de eventos de archivos para activar sus scripts. – JimB

0

En el lado del cliente, flash; Del lado del servidor, lo que sea (no haría ninguna diferencia).

No hay tecnologías existentes (excepto para usar FTP o algo así).

0

me encontré con 2 posibilidades más

  • Microsoft de transferencia inteligente de servicio (BITS):

    Tiene usuarios: y descarga, los archivos grandes, cifrada (vis https), resumable (incluso reanudación automática siempre que el usuario haya iniciado sesión), pausa y reanudación manual, autenticación (a través de https nuevamente), envoltura para .NET, prioridad de primer plano o fondo, ...

    No: del ancho de banda, la verificación de archivos (sólo tamaño del archivo), la compresión

  • rsync:

    Ha: transferencia unidireccional, archivos de gran tamaño, reanudar las subidas parciales (y hacer una pausa en medio de parada), verificación, cifrado (por ssh, stunnel), la compresión, la biblioteca c utilizable (librsync por Martin piscina [1], [2])

    No : Buena ventanas compability (sólo a través de cygwin o cwRsync), comercialmente utilizable (GPL)

Alguien encontró algo más en C#?

0

Me sorprende que nadie ha mencionado archivos torrent. También se pueden empaquetar en una secuencia de comandos que luego activa algo para ejecutar.