js arquivo de upload e download de grandes quantidades

O princípio fundamental:

 

O núcleo do projeto é fazer o upload do bloqueio de arquivo. Frente e traseira para elevado nível de cooperação, os dois lados concordaram precisam de melhores dados, a fim de segmento de arquivo grande completa, vamos nos concentrar no projeto para resolver os seguintes problemas.

* Como a fragmentação;

* Como sintetizar um arquivo;

* Interrupted que fatia desde o início.

Como pontos, usando poderosa biblioteca js para facilitar nosso trabalho, temos sido capazes de bloquear as rodas de grandes arquivos no mercado, embora a natureza do programador me forçou a recriar a roda. No entanto, por causa da relação, bem como tempo de trabalho, só posso desistir da. Finalmente, eu escolhi WebUploader do Baidu para alcançar o front-end desejado.

Quão perto, antes de fechar, é preciso primeiro resolver um problema, como podemos distinguir o bloqueio de arquivo pertence. No início, eu estava usando um front-end para gerar um único UUID fazer documentos sinal, colocar em cada pedido fatia. Mas mais tarde, quando eu desistir da segunda passagem, usando MD5 para manter o bloqueio de arquivos e relacionamentos.

servidor de arquivo de mesclagem em questão, e bloqueio de registro, e, neste aspecto, a indústria tem realmente dado uma boa solução. Referindo Trovão, você vai achar que cada vez download, haverá dois arquivos, um corpo de arquivo, um outro arquivo é um arquivo temporário, lojas de arquivo temporário que o estado de cada bloco posição de byte correspondente.

Estes são a necessidade de fazer contato próximo com frente e traseira, o front-end de uma necessidade tamanho fixo para a fragmentação de arquivos e fragmentação para trazer o número e tamanho pedido. Após pedido de transmissão de sucesso chega ao fim frente do fundo, de acordo com o servidor só precisa pedido número fatia de dados e corte cada tamanho de bloco (tamanho do segmento é fixo e o mesmo) é calculado posição inicial, eo arquivo de dados segmento de leitura, escrita para o arquivo.

A fim de facilitar o desenvolvimento, eu vou acabar com a lógica de negócios serviço segue dividido em inicialização, processamento de bloco e arquivo enviado como.

O módulo de lógica de negócios do lado do servidor segue

 

Análise Funcional:

O módulo de geração de pastas

 

Depois a pasta é carregado pelo código de verificação do servidor é a seguinte

 

Carregar bloco, processamento bloco lógica deveria ser a lógica mais simples, arquivo UP6 tem um bloco, para cada bloco e os dados de identificação, a identificação inclui o tamanho dos blocos arquivo de índice, offsets, arquivo o bloco MD5, arquivo MD5 (aberta necessários) e outras informações, o servidor pode receber a informação depois que o processo é muito conveniente. Por exemplo, os dados de bloco armazenado no sistema de armazenamento distribuído

 

Bloquear upload pode-se dizer que a base de todo o nosso projeto, como HTTP, suspender estes são a necessidade de usar o bloco.

Este bloco é relativamente simples. É o uso de um webuploader front-end, e outras funções básicas do bloco já foi selado, fácil de usar.

Com webUpload disponível para nosso arquivo de API, o front-end foi extremamente simples.

template frente HTML

 

Ele certamente aponta juntos. A grande fragmentação de arquivos, mas a fragmentação do arquivo original é nenhuma função, por isso precisamos de sintetizar fragmentação original dos arquivos. Nós apenas precisamos de fragmentação por escrito ao processo pela localização original para ir. Porque o princípio de uma frente que temos falado, nós sabemos o tamanho do bloco e número do bloco, eu posso ver a posição de início de bloco no arquivo. Então aqui é aconselhável usar RandomAccessFile, RandomAccessFile capaz de mover arquivos e para trás dentro. Mas na grande maioria da função andomAccessFile, tem sido o NIO JDK1.4 os "arquivos mapeados na memória (arquivos mapeados na memória)" substituído. Eu escrevi foram sintetizados utilizando arquivo RandomAccessFile e MappedByteBuffer no projeto. Métodos e corresponde uploadFileRandomAccessFile uploadFileByMappedByteBuffer. O código seguinte método duas.

função de transferência Sec

 

lógica do lado do servidor

função de transferência Sec, eu acredito que todos nós refletir sobre, quando o upload disco de rede, fazer o upload dos arquivos encontrados em uma segunda passagem. Na verdade, o princípio de um pouco estudantes estudados deve saber, de fato, é examinar o arquivo MD5, enviá-lo para gravar o sistema de arquivos MD5, primeiro obter o conteúdo do arquivo de valor MD5 MD5 ou parte do valor antes de fazer upload de um arquivo, e em seguida, no sistema de correspondência dados.

Breakpoint-http alcançar segundos princípio de transferência depois que o cliente selecione o arquivo, clique em Upload quando acionado obter o valor MD5 do arquivo, obtenha o MD5 chamando a interface do sistema (/ index / checkFileMd5), consultando o MD5 já existe (eu projeto em Redis usado para armazenar dados, um valor MD5 documento a chave de marca, valor é armazenado no arquivo de endereço.) retornando para verificar o estado da interface e, em seguida, para a próxima etapa. Acredito que vamos ser capazes de olhar para o código de entender.

webuploader Ah, o front-end do valor MD5 é usado vem com recursos, esta é uma boa ferramenta.

Controls irá desencadear o fim dos eventos MD5 md5_complete arquivo de cálculo e os valores tradicionais MD5, os desenvolvedores só precisam lidar com este evento,

HTTP

UP6 automaticamente retomada foi processado, e depois não têm necessidade de desenvolver um processo separado.

F_post.jsp recebe esses parâmetros e processados, os desenvolvedores só precisam se concentrar na lógica de negócios, outros aspectos não precisa se preocupar.

HTTP é que uma interrupção no processo de upload de arquivos, fatores humanos (pausa) ou leads força maior (rede ou redes quebradas diferença) para carregar arquivos para metade falhou. Então, quando restauração ambiental e re-upload do arquivo, o que não é um novo upload início.

Dianteiro também foi mencionado, as funções de HTTP é baseado no bloco carregado para alcançar, a um arquivo grande em muitos blocos pequenos, cada servidor pode ser carregado para o sucesso do bloco são moídos, o upload cliente chamada de interface para verificar rapidamente um começo de arquivo, as condições são selecionados para pular um bloco.

O princípio é que antes de cada upload de arquivos, arquivo valor MD5, relativa ao acesso interface de chamada antes de upload de arquivos (/ index / checkFileMd5, sim também passar a segunda interfaces de teste) Se a aquisição status do arquivo não for concluída, Todos os números dos blocos retornos não carregamento, e do bloco de front-end que não é carregado condições crivo é calculado, e em seguida carregar.

Ao receber o arquivo depois que os blocos de arquivos podem ser gravados diretamente para o servidor

Este é o arquivo de blocos de upload efeito

Esta é a pasta após os resultados de upload

Esta é a estrutura da pasta para armazenar carregado após o término do serviço

artigo de referência: 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 /

Bem-vindo ao grupo para discutir: 374 992 201

Acho que você gosta

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