Coisas que eu quero fazer
Este código JavaScript recupera o conteúdo de um arquivo Zip em um servidor sem salvá-lo localmente.
O processo geral é o seguinte: (Nenhum arquivo será salvo localmente.)
- Recuperar (buscar) um arquivo Zip do servidor.
- Recuperar arquivos de um arquivo zip
- (Exibir arquivo de imagem)
Estou usando NodeJS. ( Não é obrigatório, pois estou usando para o npm e em um ambiente de testes.)
O artigo a seguir explica como oferecer suporte aos formatos RAR e ZIP.
No entanto, o método descrito no artigo abaixo não utiliza o npm, portanto o gerenciamento de pacotes pode não ser claro.
Se você estiver usando apenas arquivos zip, o método descrito neste artigo é o recomendado.
Configuração do ambiente
Instale o zip.js executando o seguinte comando.
npm install "@zip.js/zip.js"A documentação oficial não inclui as aspas, mas quando executei o comando no terminal do VS Code sem elas, ele falhou.
implementação
Baixe o arquivo Zip e obtenha o arquivo inicial.
A implementação será feita da seguinte forma:
Se você não estiver usando o npm, você deve usar import * as zip from jsr:@zip-js/zip-js ; (não confirmado).
Baixando e extraindo o arquivo test.zip.
O primeiro arquivo armazenado no arquivo Zip será salvo no formato Blob com o nome file_blob..
import * as zip from "@zip.js/zip.js";
const req = new Request("test.zip");
fetch(req)
.then((res) => res.blob())
.then(async (blob_data) => {
const zipFileReader = new zip.BlobReader(blob_data);
const writer = new zip.BlobWriter();
const zipReader = new zip.ZipReader(zipFileReader);
const firstEntry = (await zipReader.getEntries()).shift();
const file_blob = await firstEntry.getData(writer);
await zipReader.close();
});Utilização de arquivos (imagens)
Se os dados recuperados forem uma imagem JPEG, você pode exibir o blob do arquivo usando URL.createObjectURL.
(Uma tag img com o ID baixado é fornecida no HTML para fins de exibição.)
if (firstEntry.filename.endsWith(".jpg") || firstEntry.filename.endsWith(".jpeg")) {
const img = document.getElementById("downloaded");
img.src = URL.createObjectURL(file_blob);
}Outras notas
Recuperando o segundo arquivo e os subsequentes
O valor retornado por zipReader.getEntries() é uma matriz contendo informações do arquivo.[1]Em seguida, você poderá acessar o segundo arquivo.
Em relação às subpastas
Os arquivos contidos em subpastas também são incluídos no valor retornado por zipReader.getEntries().
Por outro lado, as informações da pasta não estão incluídas no valor retornado por zipReader.getEntries(). (O nome de cada arquivo contém o caminho da pasta.)
Resultado
Consegui usar JavaScript para recuperar arquivos de um arquivo Zip em um servidor sem salvá-los localmente e, em seguida, exibir os arquivos de imagem.
Sites que utilizei como referência



コメント