A partir de um Blob criar um pasta jogar o Blob dentro e Zipar [Resolvido]
9 respostas
D
douglasmanteiga
BOm pessoal boa tarde alguém poderia me dar uma ideia de como faço a partir de um campo Blob Criar uma pasta em memória (não sei como isso pode ser feito) depois dentro dessa pasta jogar o Blob (IMG)…
Porque depois preciso gerar um zip e baixar…
O que você quer dizer com criar pasta em memória?
Está falando da pasta dentro do arquivo ZIP ?
E
entanglement
Você pode abrir o Blob como uma InputStream, e usando um buffer de 1 kByte (array de bytes de 1024 posições), copiar esses dados para uma ZipOutputStream.
Essa ZipOutputStream pode ser redirecionada para o socket da sua servlet, por exemplo.
E
entanglement
Não é preciso, nem necessário, nem desejável copiar todo o blob para a memória para então gerar o zip. Isso é porque você pode ter blobs muito grandes que acabem estourando a memória do seu web container.
D
douglasmanteiga
Então preciso criar uma pasta com a imagem Blob dentro e dpois zipar…Depois colocar em memória e disponibilizar para download…
G
gomesrod
Isso é o que fazemos para criar manualmente um arquivo zip… monta a estrutura de diretórios, coloca os arquivos desejados, e depois zipa a pasta inteira.
Mas é preciso entender que para criar o zip programaticamente é diferente.
Todos os arquivos são incluídos no zip como um “Zip Entry”. Esse zip entry contém o nome de arquivo e um caminho; não existem pastas.
Os programas que abrem arquivos ZIP é que mostram e extraem o conteúdo em forma de pasta, mas dentro do pacote os arquivos não estão organizados dentro de pastas… apenas estão um do lado do outro, e contém uma informação de caminho.
Não sei se expliquei direito ou confundi ainda mais, só estou querendo dizer que tem que se livrar dessa forma de pensar, de querer colocar em uma pasta e depois zipar.
O que o entaglement disse nos posts dele é para simplesmente ler o blob jogando seu conteúdo diretamente no ZIP. E na hora de construir os objetos você menciona que quer incluir um caminho para o Zip Entry.
Não sei de cabeça como fazer, mas uma pesquisa por java zip vai mostrar vários exemplos de código.
D
douglasmanteiga
Isso é o que fazemos para criar manualmente um arquivo zip… monta a estrutura de diretórios, coloca os arquivos desejados, e depois zipa a pasta inteira.
Mas é preciso entender que para criar o zip programaticamente é diferente.
Todos os arquivos são incluídos no zip como um “Zip Entry”. Esse zip entry contém o nome de arquivo e um caminho; não existem pastas.
Os programas que abrem arquivos ZIP é que mostram e extraem o conteúdo em forma de pasta, mas dentro do pacote os arquivos não estão organizados dentro de pastas… apenas estão um do lado do outro, e contém uma informação de caminho.
Não sei se expliquei direito ou confundi ainda mais, só estou querendo dizer que tem que se livrar dessa forma de pensar, de querer colocar em uma pasta e depois zipar.
O que o entaglement disse nos posts dele é para simplesmente ler o blob jogando seu conteúdo diretamente no ZIP. E na hora de construir os objetos você menciona que quer incluir um caminho para o Zip Entry.
Não sei de cabeça como fazer, mas uma pesquisa por java zip vai mostrar vários exemplos de código.
Entendi sim o que vc quis dizer… Só que não estou achando exemplos explicando de como fazer, você teria algum exemplo para me ajudar? obrigado…
Fala Gomes blza? obrigado pela ajuda deu certo de criar uma pasta, mas se eu precisa criar mais pastas na raiz? tem mais alguma outra forma.. obrigado...
D
douglasmanteiga
Aii pessoal consegui graças a ajuda do pessoal ai obrigado… segue abaixo a solução…