Cómo implementar un administrador de descargas para descargar archivos que tiene un identificador único mientras se mueve de una carpeta a otra

La descarga de un archivo funciona de la siguiente manera, con algunos detalles omitidos.

  1. Se selecciona un archivo de la fuente y se inicia una solicitud para descargar el archivo.
  2. Se abre un archivo local en el cliente para aceptar el contenido del archivo.
  3. Se implementa un ciclo de aceptar datos del servidor y escribir los datos en el archivo local.
  4. Una vez que los datos se transfirieron correctamente o se produjeron errores, el archivo local debe cerrarse.

Al abrir el archivo local, se deben tomar algunas decisiones.

  1. ¿Abre el archivo en el destino final del archivo o lo abre en un área de trabajo?
    1. Si abre el archivo en la ubicación de destino, puede encontrarse con los siguientes problemas.
      1. La ubicación de destino es un medio lento como una unidad flash y puede provocar que la descarga se detenga.
      2. La ubicación de destino es extraíble y puede desaparecer durante la transferencia. Esto causa muchas complicaciones.
    2. Si abre el archivo en un área de trabajo, debe elegir un área de trabajo con suficiente espacio para el archivo y probablemente desee un nombre de archivo único para que no entre en conflicto con otra descarga.
      1. Una vez completada la descarga, el contenido del archivo debe copiarse en la ubicación de destino. Si se copió correctamente, elimine el primer archivo local. Si la transferencia se cancela, elimine el archivo local o realice un seguimiento para reanudarlo desde donde lo dejó, si es posible. Reanudar suele ser más problemático de lo que vale y muchas transferencias de archivos no lo admiten de todos modos.

Este tipo de problemas ocurre con frecuencia y existe una solución simple. Abra un archivo temporal ubicado en una ubicación de archivo temporal designada. Si bien el código exacto depende del idioma utilizado, al abrir un archivo temporal se abrirá un archivo con un nombre que aún no existe en una ubicación determinada o en una ubicación predefinida. El archivo temporal también se borrará automáticamente una vez que se cierre.

Esto resuelve muchos problemas, pero hace que las cosas sean un poco más difíciles de manejar si desea implementar una capacidad de reanudación de descarga. Por las razones de los idiomas, implemente una función de archivo temporal que genere un nombre de archivo único para usted, pero no lo abra ni lo borre.

Por supuesto, si está implementando un tipo de transferencia de archivos torrent, por naturaleza requiere un archivo local que debe administrarse durante un período de tiempo y el uso de un archivo temporal puede no ser su mejor opción. En esta situación, es mejor que genere un nombre de archivo utilizando un GUID. Este es un número muy grande que es único cada vez que se genera. Esto es mucho más difícil de implementar en muchos idiomas porque no es una función comúnmente implementada.

More Interesting

¿Qué código usaron para Facebook?

¿Puede / cómo puede Hack Reactor ayudar a un estudiante a establecer una empresa / negocio de software?

¿Cuál es el mejor software para crear un diseño?

¿Qué empresas tecnológicas tienen el equipo de ingeniería más fuerte?

¿Cuál es el papel de la inspección en el aseguramiento de la calidad del software?

¿Es el aprendizaje automático en general más difícil que el desarrollo de software / web? ¿Es más difícil encontrar un trabajo de aprendizaje automático?

¿Cómo prueba la validez del HTML generado por taglibs o código de representación HTML en sus aplicaciones?

Soy ingeniero de software en mis 20 años y vivo en India, y tengo un trabajo que odio. ¿Cómo puedo encontrar un nuevo trabajo?

¿Cuáles son las herramientas geniales que utiliza el desarrollador de software para facilitar la vida?

Parece que DCE solo es bueno para CS / IT / SOFTWARE y, a veces, MECH también, ¿por qué es eso? ¿No hay trabajos en las sucursales principales, cuál es el paquete de pago más alto en el núcleo?

¿Cuál es el punto de obtener un título en informática hoy en día?

¿Por qué los equipos de desarrollo de productos no quieren contratar ingenieros de software que no tengan experiencia previa en desarrollo de productos, sino solo aplicaciones comerciales?

¿Qué se necesitaría para construir un cliente BitTorrent similar a uTorrent?

¿Cuánto cuesta patentar software o propiedad intelectual?

¿Cuánto tiempo llevará un proceso que tardó 10 segundos en ejecutarse si las llamadas al sistema pueden acelerarse por un factor de dos?