Ir para conteúdo
Fórum Script Brasil
  • 0

Extraindo arquivos com PHP


jefponte

Pergunta

Estou querendo criar um script para listar os arquivos de uma pasta e, ao lado dos arquivos zipados, uma opção para extrair.

Preciso de ajuda nessa primeira etapa de listagem.

Meu código está assim:

<?php

//pega o nome do diretório que terá seus arquivos listados.

$path = "../arnaldosocial/";

//abre o diretório

$diretorio = dir($path);

echo "<h4>Lista de Arquivos do diretório".$path."<br /></h4><br>";

while($arquivo = $diretorio -> read()){

//link para abrir o arquivo

echo '<h5><a href="'.$path.$arquivo.'">'.$arquivo.'</a></h5>';

//link para deletar o arquivo

echo ' || --> <a href="deletar.php?deletar='.$arquivo.'"> DELETAR </a><br />';

//link ao lado de todos os arquivos com extensão zip

//se o arquivo conter a palavra zip em seu nome, mostra o link de descompactar

if ($arquivo like '%zip%')

{

echo '<a href="descompactar.php?arquivonome='.$arquivo.'">Descompactar</a>';

}

//Se o arquivo não conter a palavra zip...

Else

{

echo 'Esse não é um arquivo arquivo zipado.';

}

//fecha o wile e fecha o diretório

}

$diretorio -> close();

?>

O meu problema está na linha onde if ($arquivo like '%zip%'). O like funciona em Mysql para fazer filtros, mas não funciona em php. EU já sabia disso. Queria saber o que é que eu uso nesse local aí para dizer: "Se o arquivo conter a palavra zip em seu nome...". Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

de um var_dump na variavel $arquivo e veja os campos que ele te retorna verifique qual é o responsavel pelA extensão do arquivo e compara se é .zip ou .rar assim nem precisa ser pelo nome já que o que você pretende é verifica arquivos compactados para descompactar.

Link para o comentário
Compartilhar em outros sites

  • 0

Jagua, já estou agradecido por você ter apontado a direção. Mas ainda continuo sem conseguir fazer funcionar, pois não sei como o var_dump funciona. Estou dando umas lidas no manual php. Eu agradeceria muito se você pudesse me explicar como isso funciona e como eu o adicionaria no meu código.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu pensei que isso aqui iria funcionar, mas a variável $msg só está recuperando, no site, o valor "Esse é um arquivo zip". Para todos os arquivos, sejam formato zip ou não.

_____

$extensaodoarquivo=substr($arquivo, -3);

if ($extensaodoarquivo ="zip")

{

$msg = 'Esse é um arquivo zip';

}

else

{

$msg = "Esse não é um arquivo zip";

}

echo $msg;

________

Link para o comentário
Compartilhar em outros sites

  • 0

Jagua, o erro dele não tem a ver com isso lol. Existe ($arquivo like '%zip%') em php? wtf.

Jef, mude essa linha:

if ($arquivo like '%zip%')
Para isso aqui:
if (strpos($arquivo,'.zip') > 0)
Ps: A solução que você encontrou sozinho também funciona, mas você esqueceu um detalhe. Ao escrever
if ($extensaodoarquivo ="zip")
você está basicamente dizendo "se for possível guardar o valor "zip" na variação $extensaodoarquivo, faça isso". Você esqueceu (ou ainda não sabe) que precisa usar DOIS sinais de iguais na hora de fazer comparações. Um sinal de igual signica atribuição. Logo, você deveria fazer:
if ($extensaodoarquivo == "zip")

.

Editado por fiote
Link para o comentário
Compartilhar em outros sites

  • 0

Bem eu entendi que ele estava listando determiandos arquivos de uma pasta onde ele queria extrair os arquivos zipados...

então ao ler os arquivos eu poderiar verificar a extensão de cada um e depois extrair o que fosse Zip.

na vdd eu falei na questão do var_dump so para ver o qual a nomeclatura que deveria dar junto a variavel que armazenava o arquivo porque não lembrei de cabeça nada que pude-se auxilhar..

então dou um var_dump...

ele me retorna o array com todos os indices dos arquivos onde tem o nome, tamanho, extensão e etc.

então eu compararia somente a extensão se fosse = a ZIP mandava extrair... rsrs

Link para o comentário
Compartilhar em outros sites

  • 0

A parte de extrair eu vou fazer usando method Get para cada arquivo separadamente, de acordo com o que o usuário escolher extrair. Por isso eu queria que ele mostrasse em baixo somente uma coisa diferente no arquivo que fosse zip. Mas mesmo assim, obrigado, JagA. Foi bom saber sobre essa var_dump. To lendo aqui no manual, porque será útil em outras ocasiões. Bem.. O Problema foi Resolvido. Vou postar o código como ficou.

arquivo listaarquivos.php da pasta jefponte.

<?php

$path = "../jefponte/";

$diretorio = dir($path);

echo "<h4>Lista de Arquivos do diretório".$path."<br /></h4><br>";

while($arquivo = $diretorio -> read()){

echo '<h5><a href="'.$path.$arquivo.'">'.$arquivo.'</a> </h5> || --> <a href="deletar.php?deletar='.$arquivo.'"> DELETAR </a><br />';

if (strpos($arquivo,'.zip') > 0)

{

echo '<a href="descompactar.php?arquivonome='.$arquivo.'">Descompactar</a>';

}

else

{

echo '<br>';

}

}

$diretorio -> close();

?>

A descompactação é feita com o arquivo descompactar.php, onde o nome do arquivo é enviado com o metodo Get, através do link.

descompactar.php

<?php

$arquivonome = $_GET['arquivonome'];

$zip = new ZipArchive;

if ($zip->open($arquivonome) === TRUE) {

$zip->extractTo("../jefponte");

$zip->close();

echo 'Arquivo extraído com sucesso!<br>Estou redirecionando a página!';

echo '<META HTTP-EQUIV=Refresh CONTENT="3; URL=http://gcsufc.com.br/jefponte/listararquivos.php">';

} else {

echo "Oh não! Deu problema! E agora?";

echo '<br>Vou redirecionar para que você possa tentar denovo.<META HTTP-EQUIV=Refresh CONTENT="3; URL=http://gcsufc.com.br/jefponte/listararquivos.php">';

}

?>

Ficou legal! Agradeço a todos que me deram atenção.

:D

:D

:D

Editado por jefponte
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...