Navegando por Arquivos do ZIP com PHP

Atualizado em 07 de Agosto de 2013

Navegando por Arquivos do ZIP com PHP

Olá pessoal,

Após ter postado dois posts sobre arquivos ZIP (compactar e descompactar) surgiram vários e-mails pedindo posts relacionados (por isso vou ir escrevendo aos poucos ;-]), um dos mais pedidos era de como Navegar pelos arquivos do ZIP, que nada mais e do que uma forma de ver quais arquivos tem em um arquivos ZIP.

O comando que vamos usar para a leitura do arquivo zip é o zip_read, que juntamente com o comando while vai nos possibilitar ver quais arquivos contém dentro do ZIP.

Vamos ver o exemplo:

<?php
$arquivo = zip_open('teste.zip');

  while($lista_arquivos = zip_read($arquivo))
  {
   echo 'Nome do Arquivo: '.zip_entry_name($lista_arquivos). '<br />';
  }

 zip_close($arquivo);
?>

Com este script podemos verificar se o arquivo que queremos realmente esta dentro do zip ou não.


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Tags:  Comandos PHP | PHP

Comentários

Sua foto do perfil

Rafael Campos

27 de Agosto de 2015 - 17:45

Sua foto do perfil

Mauricio Programador

Olá Rafael,

Existem dois comando dessa classe que podem lhe ajudar são eles: getFromName que recebe como o nome do arquivo e getFromIndex que recebe o índice do arquivo no zip.

Com eles você pode carregar um arquivo direto do arquivo zip para uma uma variável do PHP sem extrair o arquivo.

Eu não tenho nenhum exemplo dele aqui de momento, mais vou criar um post na segunda próxima para você sobre isso com o exemplo funcionado.

Abraço.

28 de Agosto de 2015 - 10:43

Sua foto do perfil

Bonfim Jr

31 de Dezembro de 2013 - 19:56

Sua foto do perfil

Mauricio Programador

Olá Bonfim,

tente assim:

$arquivo = zip_open('musicas/'.$row_show['id_show'].'/cdshow.zip');

irá funcionar.

Grande abraço.

02 de Janeiro de 2014 - 09:44

Sua foto do perfil

Bonfim Junior

Bom Tarde Mauricio.
estou com um erro na linda 17, onde eu errei?
http://rntvsat.com.br/recbook/tamanho.php?id_show=2

echo '<a href="javascript:;" onclick="jplayer_addTrack(false,'musicas/'.$row_Recordset1['id_show'].'. zip_entry_name($lista_arquivos).')">'. zip_entry_name($lista_arquivos). '</a>','<p/>';

CÓDIGO:
<?php require_once('Connections/musicnotstop.php'); ?>
<?php
$colname_Recordset1 = "-1";
if (isset($_GET['id_show'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['id_show'] : addslashes($_GET['id_show']);
}
mysql_select_db($database_musicnotstop, $musicnotstop);
$query_Recordset1 = sprintf("SELECT * FROM shows WHERE id_show = %s", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $musicnotstop) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

$arquivo = zip_open('musicas/zip/'.$row_Recordset1['titulo'].'.zip');

while($lista_arquivos = zip_read($arquivo))
{
echo '<a href="javascript:;" onclick="jplayer_addTrack(false,'musicas/'.$row_Recordset1['id_show'].'. zip_entry_name($lista_arquivos).')">'.zip_entry_name($lista_arquivos). '</a>','<p/>';
}

zip_close($arquivo);
?>
<?php
mysql_free_result($Recordset1);
?>

02 de Janeiro de 2014 - 15:48

Sua foto do perfil

Mauricio Programador

oi amigo,

olha e difícil falar sobre um código que não vejo por completo, pelo que eu pude perceber você esta fazendo as concatenações de forma errada.

teste assim:

while($lista_arquivos = zip_read($arquivo))
{
$var = 'musicas/'.$row_Recordset1['id_show'];
echo '<a href="javascript:;" onclick="jplayer_addTrack(false,' . $var.zip_entry_name($lista_arquivos) .')">' .zip_entry_name($lista_arquivos). '</a><p/>';
}

Não sei se vai dar certo pois não tenho como testar aqui, mas espero que ajude.


abraço.

02 de Janeiro de 2014 - 15:55

Sua foto do perfil

Junior

E se caso eu quisesse excluir a pasta .zip?

16 de Agosto de 2013 - 15:48

Sua foto do perfil

Mauricio Programador

Olá Junior,

se for um zip, você vai ter que usar um outro comando o unlink.

Ex.:
 unlink('NOME_ARQUIVO');

Por que na verdade um zip não seria uma pasta e sim um arquivo.

(qualquer dúvida posta aí)

Grande Abraço amigo.

16 de Agosto de 2013 - 15:53

Sua foto do perfil

Junior Bezerra

Caro Mauricio desculpe o abuso mais teria uma classe que fizesse isso com pastas .RAR?

20 de Agosto de 2013 - 19:10

Sua foto do perfil

Mauricio Programador

Olá Junior,

Para descompactar arquivos do tipo .rar basta instalar um pacote que esta neste link http://pecl.php.net/package/rar, e depois usar o código abaixo:

<?php

$rar_file = rar_open('NOME_ARQUIVO');

$entries = rar_list($rar_file);

foreach ($entries as $entry)
{
$entry->extract('/z_testando/');
}

rar_close($rar_file);

?>

O grande problema disso e que eu não conheço nenhum servidor de hospedagem que tenha este pacote instalado.

Por tanto se você não tiver como fazer esta instalação no seu servidor e bom rever a utilidade neste caso.

Espero ter ajudado.

Grande abraço.

20 de Agosto de 2013 - 19:14

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER