1
resposta

Erro ai abrir arquivo ZIP

Olá,

se seu especificar o arquivo que quero ler dentro do zip, ele funciona : EX: echo file_get_contents('zip://exemplo.zip#NovosDados.txt');

Porém quando eu solicito que leia todo o arquivo zip( no meu exemplo contem dois arquivos txt dentro) , recebo o seguinte erro:

Meu Codigo: echo file_get_contents('zip://exemplo.zip');

erro: Failed to open stream: operation failed in ...

1 resposta

Oii, Aurélio. Tudo bem?

O Wrapper de zip não ler todo o conteúdo de um zip, apenas 1 arquivo específico, conforme mostra a documentação

Um arquivo ZIP é um contêiner que pode conter vários arquivos e diretórios. Portanto, quando você tenta ler um arquivo ZIP como um arquivo único, o PHP não sabe como lidar com isso, e é por isso que você está recebendo um erro.

O que você pode fazer é usar a classe ZipArchive do PHP para abrir o arquivo ZIP e então iterar sobre cada arquivo dentro dele. Aqui está um exemplo de como você pode fazer isso:

$zip = new ZipArchive();
$conteudo = $zip->open('arquivo.zip');

for($i = 0; $i < $zip->numFiles; $i++) {
    $filename = $zip->getNameIndex($i);
    echo "Nome do arquivo: " . $filename . "\n";
    echo "Conteúdo do arquivo: " . file_get_contents("zip://arquivo.zip#" . $filename) . "\n";
}
$zip->close();

Este código irá abrir o arquivo ZIP, iterar sobre cada arquivo e também vai mostrar o conteúdo de cada um.

Espero ter ajudado e bons estudos!