JAVA upload de arquivos projeto web e download de grandes montagens

O princípio fundamental:

 

O núcleo do projeto é enviar o 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 partir do início.

Como Pontos, utilizando poderosa biblioteca js reduzir nosso trabalho nas rodas grandes têm sido arquivo segmentação capazes do mercado, embora a natureza programador me forçou a recriar a roda. No entanto, porque a relação tem horário de trabalho eu simplesmente desistir da. Finalmente, eu escolhi WebUploader da Baidu para atingir a front-end desejado.

Como fechar, antes de fechar, é preciso primeiro resolver uma questão, como vamos distinguir arquivos bloco de pertence. No início, eu estava usando um front-end para gerar um único uuid fazer documentos sinal, colocados em cada pedido fatia. Mas depois, ao posso desistir a segunda passagem, utilizando MD5 para manter o bloqueio de arquivos e relacionamentos.

servidor do arquivo de mesclagem em questão, e bloqueio de registro, e nesse sentido, o setor tem realmente dado solução uma boa. Referindo Trovão, você vai descobrir que, quando cada transferência, haverá dois arquivos, um corpo de arquivos, outro arquivo é um arquivo temporário, arquivo armazena temporários do estado de cada quarteirão posição de byte correspondente.

Estes são a necessidade de contato íntimo com frente e traseira, a extremidade dianteira de uma necessidade tamanho fixo de fragmentação de arquivos e fragmentação de trazer do número e tamanho pedido. Após solicitação da transmissão de sucesso atinge a extremidade dianteira do fundo segundo o servidor só precisa solicitação Número de fatia de dados e corte cada dimensão bloco (o tamanho segmento é fixo e o mesmo) são calculados posição inicial, e o arquivo de dados segmento lida, escrita no ficheiro.

A fim de facilitar o desenvolvimento, eu vou acabar com lógica de negócio 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

 

Após o pasta é carregado pelo código de verificação do servidor é o seguinte

 

Carregar bloco, processamento bloco lógica deveria ser a lógica mais simples, arquivo UP6 tem um bloco, para cada quarteirão e os dados de identificação a identificação inclui a tamanhos de bloco arquivo de índice, offsets, arquivo bloco MD5, arquivo MD5 (abertos necessária), e outra informação, o servidor possam receber as informações após o processo de é muito cómodo. Por exemplo os dados de bloco de armazenado no sistema de armazenamento distribuído

 

Bloco de carregamento podem ser disse que de base de todo o nosso projeto como HTTP suspender estas são necessidade de usar a bloco.

Este bloco é relativamente simples. O front-end é o uso de webuploader, bloquear e outras funções básicas foram encapsulados, fácil.

Com webUpload disponível para nosso arquivo de API, a extremidade dianteira foi extremamente simples.

template frente HTML

 

Ele certamente aponta juntos. A grande fragmentação de arquivos e fragmentação mas não haverá nenhuma funcionalidade de arquivo original, então queremos sintetizar fatia do arquivo original. Nós apenas precisamos de fragmentação escrito para o arquivo pela localização original para ir. Porque o princípio do uma frente que temos falado, nós saber o tamanho quarteirão e vários blocos, saberei à posição de partida do bloco no ficheiro. Portanto, aqui está a utilização de RandomAccessFile sábio, RandomAccessFile capaz de se mover de arquivos frente e para trás no interior. Mas na vasta maioria da função andomAccessFile, foi o NIO JDK1.4 os "arquivos mapeados na memória (arquivos de memória mapeada)" substituído. Eu escrevi foram sintetizados utilizando arquivo RandomAccessFile e MappedByteBuffer no projeto. Métodos e corresponde uploadFileRandomAccessFile uploadFileByMappedByteBuffer. Método dois código abaixo.

função transferência Sec

 

lógica do lado do servidor

função de transferência Sec, que todos nós refletir sobre, Quando o upload de disco rede, carregar os arquivos encontrados em uma segunda passagem. De fato, o princípio de um pouco estudantes estudados devem saber, de fato, é examinar o arquivo MD5, faça o upload para gravar o sistema de arquivos MD5, primeiro obter os conteúdos do arquivo valor MD5 MD5 ou parte do valor antes de carregar um arquivo, e depois no sistema de correspondência dados.

Breakpoint-http atingir segundos princípio transfer após o cliente selecionar o arquivo, clique em Upload em que o gatilho começar o valor MD5 do arquivo, obtiverem o MD5 de chamar o interface do sistema (/ índices / checkFileMd5) consultando a MD5 já existe (eu projeto em Redis usado para armazenar dados, fazer um documento chave valor MD5, valor é armazenado no ficheiro de endereço.) voltando para verificar o estado de interface, e depois para a próxima etapa. Acredito que vamos ser capazes de olhar para o código de entender.

webuploader Ah, a extremidade dianteira do valor MD5 usado vem com recursos, esta é uma boa ferramenta.

Controles calcular documento final irá disparar depois de eventos md5_complete MD5 e os valores tradicionais MD5, os desenvolvedores só precisa 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 esses parâmetros recebido e processado, os desenvolvedores só precisa se concentrar em lógica de negócio, outros aspectos precisam ser causa não.

HTTP é uma interrupção ocorreu durante o upload de arquivos, fatores humanos (pausa) força maior ou a (líquidas ou fora os pobres de rede) levaram aos arquivos enviados para a metade falhou. Então quando restauração ambiental e re-enviar o arquivo, e não será reinício de envio.

Dianteiro também foi mencionado, as funções do bloco de carregamento baseada em HTTP para atingir, em grande arquivo em muitos blocos pequenos, cada servidor podem ser enviados para o sucesso do bloco são moídos para baixo, o carregamento cliente Call Interface para verificar rapidamente a início arquivo, condições de são selecionados para pular uma bloco.

A princípio, é que antes cada arquivo de upload para obter o valor MD5 de arquivos, interface de ligação antes mesmo de upload de arquivos (/ índice / checkFileMd5 sim também passar no segundo teste Interface) Caso a aquisição de estado do arquivo não é concluído, Todos os números dos blocos retornos não de carregamento, e de bloco frente não-fim que é carregado condições crivo é calculada, e depois carregar.

Ao receber a arquivo após as blocos de arquivos podem ser gravados diretamente para o servidor

Este é o arquivo blocos de upload vigor

É o pasta de upload after effects

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 % dC% E4% BC% A0 E4% 8A% B8% E4% BC% A0% /

Bem-vindos à do grupo para discutir: 374 992 201

Acho que você gosta

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