JAVA proyecto WEB carga de archivos y la descarga de grandes ensamblajes

El principio básico:

 

El núcleo del proyecto es para cargar el bloque de archivos. Frente y la parte trasera de alto nivel de cooperación, las dos partes acordaron necesitan mejores datos con el fin de efectuar la segmentación de archivos de gran tamaño, debemos centrarnos en el proyecto para resolver el siguiente problema.

* Como la fragmentación;

* ¿Cómo sintetizar un archivo;

* Interrumpido el cual rebanada desde el principio.

Como puntos, utilizando librerías js potentes para reducir nuestro trabajo sobre grandes ruedas han sido capaces de segmento de archivo del mercado a pesar de la naturaleza programador me ha obligado a volver a crear la rueda. Sin embargo, debido a la relación, así como tiempo de trabajo, sólo puedo renunciar al. Por último, he optado por WebUploader de Baidu para lograr el front-end deseada.

¿Qué tan cerca, antes del cierre, primero debemos resolver un problema, ¿cómo distinguimos el bloque de archivo pertenece. Al principio, yo estaba usando un front-end para generar un UUID únicas hacen firmar documentos, se puso cada solicitud rebanada. Pero más tarde, cuando le doy hasta el segundo paso, usando MD5 para mantener relaciones de archivos y bloques.

El servidor de documentos de combinación de un problema, registros y sub-bloque, de hecho, la industria en este sentido se ha dado una buena solución. Refiriéndose trueno, se dará cuenta de que cada vez que descarga, habrá dos archivos, un archivo del cuerpo, el otro es archivos temporales, archivos temporales se almacenan bytes correspondientes a cada bit de estado del bloque.

Estos son la necesidad de hacer un estrecho contacto con los extremos delantero y trasero, el extremo delantero de un tamaño fijo necesidad a la fragmentación de archivos, y la fragmentación de llevar el número y el tamaño de la petición. Después de solicitud de transmisión exitosa alcanza el extremo frontal del fondo, de acuerdo con el servidor sólo necesita número de segmento de solicitud de datos y el tamaño de bloque de cada rebanada (tamaño de segmento es fijo y es el mismo que) se calcula la posición de inicio, y el archivo de datos del segmento de lectura, la escritura en el archivo.

Con el fin de facilitar el desarrollo, voy a terminar la lógica de negocio de servicios sigue dividido en la inicialización, bloque, archivo subido similares.

El módulo de lógica de negocio del lado del servidor sigue

 

Análisis Funcional:

módulo de generación de carpeta

 

Después de la carpeta se carga por el código de rastreo del servidor de la siguiente manera

 

Subir bloque, el procesamiento de bloque lógico debe ser la lógica más simple, archivo UP6 tiene un bloque, para cada bloque de los datos de identificación y, la identificación incluye el tamaño de los bloques archivo de índice, las compensaciones, archivo el bloque MD5, MD5 archivo (abierta es necesario) y otra información, el servidor después de recibir esta información pueden ser fácilmente procesados. Por ejemplo los datos de bloque almacenan en el sistema de almacenamiento distribuido

 

Bloque de carga se puede decir que la base de todo nuestro proyecto, como HTTP, suspender estos son la necesidad de utilizar el bloque.

Bloquear esto es relativamente simple. Es el uso de un webuploader extremo delantero, y el bloque de otras funciones básicas ya ha sido sellado, fácil de usar.

Con webUpload a disposición de nuestra API de archivos, el extremo delantero era extremadamente simple.

Frente plantilla HTML

 

Ciertamente señala juntos. La gran fragmentación de archivos, y la fragmentación, sin embargo no habrá funcionalidad archivo original, por lo que necesitamos para sintetizar fragmentos del archivo original. Sólo tenemos que la fragmentación escrito en el archivo de la ubicación original para ir. Debido a que el principio de un frente que hemos hablado, sabemos que el tamaño de bloque y el número de bloques, que pueden ver la posición de inicio de bloque en el archivo. Así que aquí es aconsejable utilizar RandomAccessFile, RandomAccessFile capaz de mover archivos de un lado a otro dentro. Pero en la gran mayoría de la función andomAccessFile, ha sido el NIO JDK1.4 los "archivos mapeados en memoria (archivos mapeados en memoria)" reemplazado. Escribí fueron sintetizados usando el archivo RandomAccessFile y MappedByteBuffer en el proyecto. Métodos y corresponde uploadFileRandomAccessFile uploadFileByMappedByteBuffer. El código siguiente método dos.

función de transferencia sec

 

lógica del lado del servidor

función de transferencia seg, creo que todos reflexionemos sobre, cuando la carga de discos de red, cargar los archivos que se encuentran en una segunda pasada. De hecho, el principio de un poco de alumnos estudiados deben saber, de hecho, es examinar el archivo MD5, subirlo a registrar el sistema de archivos MD5, primero hay que obtener el contenido del valor MD5 MD5 archivo o parte de un valor antes de subir un archivo, y luego en el sistema de concordancia datos.

Punto de interrupción-http alcanzar segundo principio de transferencia después de que el cliente seleccione el archivo, haga clic en Cargar cuando se activa obtener el valor MD5 de archivos, después de obtener MD5 llamar a la interfaz del sistema (/ index / checkFileMd5), consultar el MD5 ya existe (I proyecto en Redis utilizado para almacenar datos, un valor MD5 documento clave marca, el valor se almacena en el archivo de direcciones.) volver a comprobar el estado de la interfaz, y luego a la siguiente etapa. Creo que vamos a ser capaces de mirar el código de entender.

webuploader ah, la parte delantera del valor MD5 se utiliza viene con las características, esto es una buena herramienta.

Los controles pueden desencadenar el final del archivo cálculo eventos MD5 md5_complete, y los valores tradicionales MD5, los desarrolladores sólo tienen que hacer frente a este evento,

HTTP

UP6 automáticamente reanudar ha sido procesada, y entonces no tienen necesidad de desarrollar un proceso independiente.

F_post.jsp recibe estos parámetros y procesados, los desarrolladores necesitan sólo afectan a la lógica de negocio, no hay otros aspectos de interés.

HTTP es que una interrupción en el proceso de carga de archivos, los factores humanos (pausa) o de fuerza mayor (red o redes roto diferencia) cables para subir archivos a la mitad falló. Luego, cuando la restauración del medio ambiente, y volver a subir el archivo, que no es una nueva carga de inicio.

Frente También se ha mencionado, las funciones de HTTP se basa en el bloque cargado de lograr, de un archivo grande en muchos bloques pequeños, cada servidor se puede cargar en el éxito del bloque se muelen abajo, la carga del cliente interfaz de llamada para verificar rápidamente un archivo de inicio, se seleccionan las condiciones para saltar de un bloque.

El principio es que antes de cada carga de archivos, archivo de valores MD5 en el acceso a la interfaz de llamada antes de subir archivos (/ index / checkFileMd5, sí también pasan las segundas interfaces de prueba) Si la adquisición de estado del archivo no se ha completado, Todos los números de bloque de declaraciones de no carga, y de bloque front-end que no se cargan condiciones tamiz se calculan, y luego cargar.

Cuando se recibe el archivo después de que los bloques de archivos pueden ser escritas directamente al servidor

Este es el archivo de bloques de carga de efecto

Esta es la carpeta después de los resultados de subida

Esta es la estructura de carpetas para almacenar subido después del final del servicio

Artículo de referencia: http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7 % 82% B9% E7% BB % AD% E4% BC% A0% E4% B8% 8A% E4% BC% A0 /

Bienvenido al grupo a discutir: 374 992 201

Supongo que te gusta

Origin www.cnblogs.com/songsu/p/12665850.html
Recomendado
Clasificación